I can not answer what original developers thought of, but some elements are clearly exposed by the design of the interface.
First, let's note that ResultSet is an interface, the designers did not intend it to be serializable or not.
But still, ResultSet is such a powerfull interface, that it hardly makes sense for it to be generally serializable.
A few examples.
- ResultSet participates in transactionnal behavior. If the result set was to be serialized, and sent elsewhere (to a file, to another JVM via RMI...) what happens to the original transaction ?
- ResultSet allows for direct update of columns in rows, or even row deletion. If the result set was to be serialized and sent elsewhere, how would that work ?
- ResultSet allows for the Streaming of some types of columns (*LOB). How would streaming work in a seriliazable context ?
- How would methods such has refresh work when (de)serialized ?
These are a few of the non-trivial questions that arise when you think about ResultSet serialization.
It seems to me that ResultSet was designed, and somehow optimized, to reflect a direct and live connection to a relational database, not a Set of "portable" datas.
The examples above are a clear sign that a serializable ResultSet implementation could have restriction on its implementation once deserialized (update methods would essentially be no-ops).
Plus, it seems inevitable that trying to serialize the content of the result set implies the need to iterate it "somehow" : the content is inevitably linked to the fetching of all datas in the resultSet (maybe implementors could optimize the process so as not to parse it fully, only getting raw bytes for the database, but you would still need to fetch the datas in order to serialize them).
So, it is my opinion that designers and most implementors of the ResultSet interface cared more about the live aspect of a ResultSet (ability to participate in transactionnal behavior and writeBack to the DB using update methods) than its serialization (or serializability).
That said, given sufficient contraints on the implementation (like no-oping the update methods, and disabling streaming capabilities), it certainly is possible to make a serializable implementations.