Steve Dohrmann shares info on a great new Java library for storing Java data long-term. The Persistent Collections for Java library lets you create Java objects whose contents are stored directly in persistent memory. The library contains a selection of persistent collection classes including arrays, lists, and maps, as well as other persistent classes. You can define your own persistent classes as well.

Hi, my name's Steve Dohrmann. And I'd like to tell you about a great new Java library for storing Java data long term. Intel Persistent Memory DIMMs, based on 3D [? CrossPoint ?] media, retain data even after power is removed and offer large capacities up to six terabytes in the second half of 2018 with next generation Intel Xeon scalable processors. 

The persistent collections for Java library lets you create Java objects whose contents are stored directly in persistent memory. The library contains a selection of persistent collection classes, including arrays, lists, and maps, as well as other persistent classes. You can define your own persistent classes as well. 

Persistent objects are stored in persistent memory in a way similar to how regular Java objects are stored in RAM, that is in object layout form without the use of files or serialization. Persistent objects behave like regular Java objects, but their life can extend beyond an instance of the Java Virtual Machine or across machine restarts indefinitely really. Like regular Java objects, the lifetime of persistent objects is determined by the reachability. An object stays around as long as there is at least one outstanding reference to it. 

After an object becomes unreachable, it will automatically be garbage collected. The library offers a special, permanently reachable map, placing a reference to an object. And this map keeps it reachable and alive. Likewise, anything contained by an object that's in this special map remains reachable. Because the contents of persistent memory are retained and can be used long-term, it's important to maintain consistency of persistent data even in the face of crashes and power failures. 

Persistent collections and other objects from the library off of this data consistency at the Java method level. Methods behave as if they execute completely or not at all. They will not leave partially written changes in persistent memory. In addition to high-level persistent objects, the library offers low-level byte-addressable access to persistent memory from Java. 

You can allocate regions of persistent memory and read and write bytes and other Java primitive types in a random access way. A memory regions data will persist until you manually free the region. All of this functionality is being developed in the open source persistent collections for Java project available on GitHub. More information, including sample code, is available in the links provided. 

I hope you found this introduction interesting and that you get a chance to explore the persistent collections for Java project on GitHub. Don't forget to like this video and subscribe to the Intel software or YouTube channel. Thank you.