Well, in Java there is a garbage collector active that usually removes objects in memory that are no longer referenced. Domino only needs the recycling because Java within Domino in truth is just a thin layer on actual C++ objects. The Java part is cleaned up by the garbage collection, however the underlying C++ objects never know, when they're no longer needed. The recycle() method basically tells them to free up the space they used in memory. So as long as you're using pure Java, there is no recycling needed.
The lack of a destructor within Java can also be a challenge if you want to make sure that objects are unloaded in a certain way. There is no real way of telling when the garbage collector exactly hits the objects and in what order, at least to my knowledge.