1. Java Bean Collections
This choice suits for direct JR API calling, under which condition you can prepare collections programmatically, otherwise, you would feel like this:
Pain 1: Can't pass parameters to the static method which returns a Collection<?> or an array of objects. Thus we would have tons of objects in memory.
Pain 2: Need to develop and package a .jar for the Java Bean relevant project, which would involve a full-fledged persistence layer, besides, seems can not use Spring framework. Work effort amount would be a major concern.