We live in a world of both commercial and open-source software, each one having strengths and weaknesses. But when it comes to books, there hasn’t been any noticeable revolution towards embracing new writing methodologies. The current book market shares the same philosophy with commercial software business model. There is a fee for obtaining a book copy, evolution is rather slow and usually there is a single person carrying all the weight of writing. It’s worth noticing that this model offers only the author’s point of view on a particular subject.
Yet, there is nothing wrong with the classic book writing process, but that doesn’t mean it has to be the only way of conceiving a book.
Why not embracing the open-source philosophy for writing books too? There are advantages for such an endeavor:
- the writing effort could be split among multiple domain connoisseurs
- there is no dead-line pressure, meaning you can write as much as your spare time allows you to
- we can constantly improve the book, in a similar way with software releases: 1.0.0, 1.1.0, 2.0.0
- the book is available from day one, and it can constantly be reviewed and enhanced using the Agile methodologies
I am taking this idea very seriously and therefore I decided to write my first open book, entitled “Unfolding Java Transactions”. I will use GitHub to manage the writing version management.
The motivation for writing such book comes from my previous interactions with enterprise software development. In any such project, the transaction management was never viewed as a priority upon designing the system and that’s always been puzzling me. Data integrity is extremely important, and it should be treated with the same attention like data modelling, testing or automatic deployment. Transaction management is not an easy subject and it makes sense to congregate all the Java Transaction knowledge in a single free book. I welcome any person willing to contribute to this project, since “two heads are better than one”.
This is what I will write about:
- The chemistry of ACID
- Concurrency control
- Logical vs Physical Transactions
- Why do ORM always need Transactions?
- Local Transactions
- Spring local transactions
- Hibernate local transactions
- Global Transactions
- X/Open XA Protocol
- 2PC and 1PC
- Spring JTA transactions
- Hibernate JTA support
- File transactions with XADisk
- Batch processing transaction management
- Spanning an XA Transaction over JMS, DB and the File System
- Transactional Memory
- Multiverse STM