In C, structs have no overhead at all. They use only as much memory as is needed for the data. In Java, each object, even the smallest ones, have a very real overhead, which can sometimes be even bigger than the data itself that the object carries.
When you have large arrays of the same type of objects, it would be good if you could save yourself the java object overhead. Also, this would greatly reduce the total number of objects in the heap, which would also reduce significantly the work of the GC.
But there are no single perfect solution to this problem, so several implementations of the same API will be needed, to find the solution that is the best suited to solve this problem.
All the coding will be done in a private github project.