Skip to content

Easy Batch documentation has been moved to the GitHub Wiki of the project.

This website will be shutdown on 31/07/2017.

What is Easy Batch?

Easy Batch is a framework that aims to simplify batch processing with Java. It's goal is to free you from boilerplate code for tedious tasks such as reading, writing, filtering, parsing, validating data and let you concentrate on your batch processing business logic.


The motivation behind the framework is to make your life easier. Easy Batch is a lightweight framework that you can configure easily with a fluent Java API and run in a standalone mode or embedded in an application server.


Task You Easy Batch
Implement business logic
Handle resources I/O
Data filtering / validation
Type conversion
Objects marshalling / unmarshalling
Transaction management
Logging / Reporting
Job Monitoring / Scheduling

How does it work? easy ..

Easy Batch jobs are simple processing pipelines. Records are read in sequence from a data source, processed in pipeline and written in batches to a data sink:

Easy Batch provides the Record and Batch APIs to abstract data format and process records in a consistent way regardless of the data source type.

Core Features

Lightweight framework

The framework's core has no dependencies and hence a small memory footprint: a 112Ko jar file with a lot of features.

POJO-centric development

Easy Batch development is POJO-centric. You can map data to your domain objects so you can still work with the Object Oriented aspect of Java.

Declarative data validation

Easy Batch lets you declare data validation constraints on your domain objects and handles the validation code for you.

Parallel execution

Easy Batch allows you to run multiple jobs in parallel to speed up execution and reduce processing time.

JMX monitoring

With Easy Batch, you can monitor your job execution and progress using JMX in real time.

Modular architecture

Easy Batch architecture is modular and extensible through a consistent API. You can extend its components and integrate your own solutions.

Show me the code!

Let's suppose you have to deal with tweets represented by a Tweet class. Here are some examples:

Job job = JobBuilder.aNewJob()
    .named("transform tweets")
    .reader(new FlatFileRecordReader("tweets.csv"))
    .filter(new HeaderRecordFilter())
    .mapper(new DelimitedRecordMapper(Tweet.class))
    .marshaller(new XmlRecordMarshaller(Tweet.class))
    .writer(new FileRecordWriter("tweets.xml"))
    .batchSize(10)
    .build();

JobReport report = new JobExecutor().execute(job);
DataSource ds = ..; // get a JDBC data source
Job job = JobBuilder.aNewJob()
    .named("export tweets")
    .reader(new JdbcRecordReader(ds, "select * from tweet"))
    .mapper(new JdbcRecordMapper(Tweet.class))
    .marshaller(new DelimitedRecordMarshaller(Tweet.class))
    .writer(new FileRecordWriter("tweets.csv"))
    .batchSize(10)
    .build();
    
JobReport report = new JobExecutor().execute(job);

Can you guess what does each example do? Easy, isn't it?

This is what Easy Batch is all about! Making your code declarative, intuitive, easy to read, understand, test and maintain.

Latest news

23/10/2016 - Release: Version 5.0.0 is finally here! News

Easy Batch v5 is the best release ever! This major version brings a LOT of improvements to the core framework. Many thanks to all contributors! The complete change log is here.

01/10/2016 - Presentation: Devoxx 2016

Easy Batch will be presented at Devoxx this year. See you in Casablanca in November 1st–3rd 2016.

25/09/2016 - Release: Version 4.2.0 is released

About 15 issues have been addressed in this release containing bug fixes, improvements and new features. This is is the last feature version in the 4.x line. Only bug fixes will be addressed in future 4.2.x versions. See all changes here.

Testimonials

"I use this framework in production (and love it)"

chsFleury / @github

"thanks for this nice and useful framework!"

nfleury / @github

"we are using [Easy Batch] and we love it :)"

sothavirak / @github

"Thanks @easy_batch. You guys rock - especially your use of fluent interfaces in your APIs :-)
#cleancode"

NorthConcepts / @twitter

"Thanks for all the updates related to Spring Batch. However, after some research I have decided to use EasyBatch"

hashbrown / @stackoverflow

"Loving [Easy Batch] so far.
Making something I'm working on very simple"

zackehh_ / @twitter

"thanks for this project. I like it a lot."

Kmouille / @github

"Easy Batch looks pretty interesting."

petrikainulaine / @twitter

"Easy Batch looks neat."

smelaatifi / @twitter

Acknowledgments

Yourkit

Many thanks to YourKit, LLC for providing a free license of YourKit Java Profiler to kindly support the development of Easy Batch.

JetBrains

Many thanks to JetBrains for providing a free license of IntelliJ IDEA to kindly support the development of Easy Batch.

Travis CI

Many thanks to Travis CI for providing a free continuous integration service for open source projects.