« Page 3 of 18 »

  1. I have released the newest version of JetS3t, version 0.8.0.

    Real Google Storage support

    Amongst many other things, this release is the first to include native support for Google Storage for Developers (GS). This means that you can now interact with GS using its own API instead of relying on its (mostly) S3-compatible API. Take a look at the GS sample code.

    I would like to thank the Google developers who helped make this possible.

    Major changes -- Take care

    This release includes more changes to the underlying JetS3t codebase than I've made in a long time, hence the move to version 0.8.x. A broad refactoring was necessary to add the brand new GoogleStorageService, and it's related Google-specific features, in a relatively sane way.

    The advantages of all these changes are:

    • JetS3t now has generic storage service, bucket, object, and multi-threading classes to simplify working with different providers, Amazon S3 or Google Storage
    • We have finally dropped support for JDK version 1.4 and moved to Java 6+, so we can take advantage of newer language and library features (generics, at last!)

    The disadvantages of the rework are:

    • We have definitely broken backwards-compatibility for some folks who use older JDKs. Sorry about that
    • Despite our best intentions we may have broken backwards-compatibility in non-obvious places

    This release is likely to be more buggy and less stable than you've come to expect from JetS3t. Before you upgrade, be sure to read the full RELEASE_NOTES.txt document and do plenty of testing.

    And, of course, file bugs if you find any.

    Get the code

    Visit the JetS3t web site to download the latest release, and to view the latest code samples and API Javadoc.

    The latest version should be available from the official Maven2 repository within a few days.

    Change Summary

    Here is a summary of new features and changes in this release.

    Potentially backwards-incompatible changes:

    • Wide-ranging code changes made adding support for Google Storage may lead to API incompatibilities
    • JetS3t now requires Java 6+, it is no longer compatible with JDK 1.4
    • Changed property names:

      • s3service.internal-error-retry-max => storage-service.internal-error-retry-max
      • s3service.stream-retry-buffer-size => uploads.stream-retry-buffer-size
      • s3service.defaultStorageClass => s3service.default-storage-class
    • Removed antiquated and unsupported SOAPS3Service

    • Methods for setting and using AWS DevPay credentials moved from S3Service to RestS3Service
    • Deprecated a range of S3-specific classes, where provider-agnostic implementations are now available

    New support for Google Storage provider:

    • Native Google Storage service and ACL implementations: GoogleStorageService, GSAccessControlList
    • Generic bucket, object, and service classes for interacting with either of the S3 or Google Storage services
    • Provider-agnostic multi-threaded services: ThreadedStorageService, SimpleThreadedStorageService
    • Almost all utility classes are compatible with both the S3 and Google Storage services

    Bug fixes:

    • CloudFrontService: URL signing API changed to support HTTPS and RTMP resources, not just HTTP ones

    New toolkit functionality:

    • RestS3Service: supports for bucket access policies
    • CloudFrontService: support for Default Root Object and object invalidation
    • FileComparer utility and JetS3t apps now uses a trailing slash to denote directory place-holder objects, instead of the custom "application/x-directory" content-type

    Cockpit application updates:

    • Log in to either Amazon S3 or Google Storage services via GUI
    • Manage a CloudFront distribution's Default Root Object

    Synchronize application updates:

    • Fully supports new GoogleStorageService, allowing synchronization with Google Storage via its native API
    • Choose target service end-point, Amazon S3 or Google Storage, with the --provider command argument

    There are comments.

  2. JetS3t 0.7.4


    The latest release of JetS3t, version 0.7.4, was released over the weekend.

    Bug fixes:

    • Shell scripts are more compatible with Cygwin

    New toolkit functionality:

    • Added support for the new Reduced Redundancy Storage (RRS) class for objects
    • CloudFrontService: Support for HTTPS-only distributions and logging of streaming distributions
    • Added support for buckets located in the Asia Pacific (Singapore) location "ap-southeast-1"
    • Improved compatibility with Eucalyptus/Walrus

    Cockpit application updates:

    • Reduced Redundancy Storage class
    • Buckets located in the Asia Pacific (Singapore) location
    • HTTPS-only CloudFront distributions

    Synchronize application updates:

    • Allow synchronization with third-party buckets that are not owned by the user

    Other notes:

    • CloudFrontService API changes may break backwards-compatibility
    • SOAPService is deprecated and will soon be removed from the toolkit

    Visit the JetS3t web site to download the latest release and view the latest code samples and API Javadoc. The latest version should also be available from the official Maven2 repository by now.

    Read about the complete list of changes in the release notes, and visit the development site to submit bug reports or help out with the project.

    There are comments.

  3. As of a few minutes ago the latest JetS3t code includes support for a new S3 feature called Reduced Redundancy Storage. If you keep non-vital data in S3 you can now choose to accept "reduced redundancy" for this data in return for a cheaper storage rate.

    Accept a little more risk, save some bucks. For many S3 customers this will be an attractive option.

    See Amazon's RRS blog post for more information.

    Below is a brief overview of how you can use the feature in JetS3t once you have downloaded and built the latest code.


    The Cockpit application has support for the new storage class in a few places:

    • In the preferences you can choose the default storage class to apply when uploading objects
    • the Copy or Move Objects dialog allows you to choose the storage class for destination objects. This makes it easy to apply the cheaper storage option to many objects, you simply copy the objects in-place after selected the REDUCED_REDUNDANCY storage class
    • each object's current storage class is now shown in the Object Attributes dialog.


    In the API you set the storage class of an object prior to uploading it:

    // Create an object as usual
    S3Object object = new S3Object("my-object", "some data");
    // Set the non-default storage class prior to upload
    // Upload as usual
    s3Service.putObject("bucket-name", object);

    To apply the new storage class to existing objects you call the normal RestS3Service copyObject or moveObject methods after setting the storage class attribute of each destination object.

    To check the storage class an object is stored under you perform a bucket listing then call the S3Object's getStorageClass method:

    S3Object[] objects = s3Service.listObjects("bucket-name");
    for (int i = 0; i < objects.length; i++) {
            + ": " + objects[i].getStorageClass());

    There are comments.

  4. Amazon has announced the new Access Logs feature for CloudFront streaming distributions. With access logging turned on you can see when and how people interact with your streamed content.

    The latest JetS3t code provides basic API support for enabling and managing these access logs, in much the same way as you do for non-streaming distributions. See the recent changes to the CloudFrontSamples.java file for example usage.

    Note that this new feature has not yet been widely tested so file a bug report to let me know if you have problems.

    There are comments.

  5. I'm thinking of buying Michael Lewis' new book, The Big Short. So I visit the Amazon site and see a pretty terrible average review of only 2.5 stars. What gives?

    Turns out a bunch of douches have given the book one-star reviews because the book is not yet available on the Kindle.

    Not only are they submitting low reviews because they cannot yet buy the book in their preferred form -- a decision that is most likely made by the publisher not the author -- but they are doing so without even reading the book. This is a whiny and pathetic form of "protest" that does nothing but pollute the digital commons. Grow up folks!

    There are comments.

« Page 3 of 18 »