Drift
Drift is an easy-to-use, annotation-based Java library for creating Thrift clients and serializable types. The client library is similar to JAX-RS (HTTP Rest) and the serialization library is similar to JaxB (XML) and Jackson (JSON), but for Thrift.
Example
The following interface defines a client for a Scribe server:
@ThriftService
public interface Scribe
{
    @ThriftMethod
    ResultCode log(List<LogEntry> messages);
} 
The log method above uses the LogEntry Thrift struct which is defined as follows:
@ThriftStruct
public class LogEntry
{
    private final String category;
    private final String message;
    @ThriftConstructor
    public LogEntry(String category, String message)
    {
        this.category = category;
        this.message = message;
    }
    @ThriftField(1)
    public String getCategory()
    {
        return category;
    }
    @ThriftField(2)
    public String getMessage()
    {
        return message;
    }
} 
An instance of the Scribe client can be created using a DriftClientFactory:
// create a client
Scribe scribe = clientFactory.createDriftClient(Scribe.class);
// use client
scribe.log(Arrays.asList(new LogEntry("category", "message"))); 
Detailed Documentation
- Drift Codec -- Thrift type annotations and serialization
 - Drift Client -- Thrift client usage
 - Drift Server -- Thrift server usage