Transactions are often used to structure activities within reliable software applications. In Java EE, business logic typically involves accessing transactional resource managers (databases, message queues) within boundaries denoted by calls to the JTA (begin/commit/rollback). The resource managers work with the transaction manager to perform e.g. locking, logging and recovery transparently to the application programmer. However, this separation of concerns is broken with regard to one important resource: the file system. Java's file I/O library does not support transactions, a situation which requires application programmers to implement such support manually in their programs. In this project you will develop a transaction aware resource manager for file I/O in Java. This library will provide application programmers with access to a filesystem that offers ACID semantics.
We already have a transactional file I/O implementation but there are now alternatives available. XADisk (https://xadisk.java.net/) seems to have a vibrant user community, so we should take a look at this. Part of the work will be to compare and contrast the options available.
To undertake this project you should have a good understanding of Java file I/O and some knowledge of transactions (ACID semantics and the JTA). The work will be open source.