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.
|Implement business logic|
|Handle resources I/O|
|Data filtering / validation|
|Objects marshalling / unmarshalling|
|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
Batch APIs to abstract data format and process records in a consistent way regardless of the data source type.
The framework's core has no dependencies and hence a small memory footprint: a 112Ko jar file with a lot of features.
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.
Easy Batch allows you to run multiple jobs in parallel to speed up execution and reduce processing time.
With Easy Batch, you can monitor your job execution and progress using JMX in real time.
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.
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.
"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 :-)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.zackehh_ / @twitter
Making something I'm working on very simple"
Many thanks to Travis CI for providing a free continuous integration service for open source projects.