Hi, about 2 months ago I started patching JDBM for my needs. It kind of overgrown so I forked JDBM and released my project as JDBM 2. I finished codding so is time to make public release. Alpha 1 have all features described bellow, but probably contains bugs and incomplete documentation. Get it from: http://code.google.com/p/jdbm2/downloads/list
My work is based on JDBM 1.0 source code. It does not change JDBM internals much, rather it 'sprinkles sugar on top'. I introduced features I missed, and fixed most obvious performance problems visible in profiler. I tryed not to make too big changes. This release is not compatible with 1.0, file format is different and API have some changes. I thought there was no work done after 1.0 release. I found about SVN trunk on Source Forge after most of my changes were done. As result JDBM2 code is more stable and compact. I back-ported some unit tests, bug fixes and performance improvements. I have no plans to work on concurrency, multiple transaction support and other advanced things. My changes from 1.0: ** HashMap and TreeMap views ** There are now java.util.Map views which wrapes HTree and BTree. Using trees directly is discouraged in examples and documentation. All IOException are wrapped in unchecked IOError. ** Secondary maps ** This feature is inspired by BerkleyDB. It is M:N index over primary data which gets automaticaly updated ** Compact serialization ** Numbers, Strings, arrays, JDBM and java.util classes are serialized using less data. Size is reduced 3x to 10x times. Speed also improved. ** Soft Reference Cache ** Stable 1st level soft reference cache. This implementation does not reference data objects directly, rather it uses completely unrelated instances and discarts data latter in ReferenceQueue. It is slower but more reliable then original one. It is on by default if JVM have more then 100 MB RAM available. ** Reduced object trashing ** Profiler showed that original code was allocating too many Long and byte[] instances. This caused GC to trash very often and sometimes 'OutOfMemoryError: GC overhead limit exceeded ' error. JDBM2 reduces those allocations almost to zero. ** Reduced memory footprint ** JDBM2 memory data structures takes less spaces. OutOfMemoryExceptions are greatly reduced. ** 2GB file split ** JDBM2 store is splited between more files, each of them smaller then 2GB. It is possible to use in on FAT32 (maybe not so actual in 2010). ** Generics ** All public APIs have generics. ** Compression ** Optional compression based on Inflate algorithm. ** Small jar size ** Standalon JAR file size grown from 80 KB to 125 KB. I hope this work will be useful. Please send me your comments. Regards, Jan Kotek ------------------------------------------------------------------------------ _______________________________________________ Jdbm-developer mailing list Jdbm-developer@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jdbm-developer