I don't know exactly what you're sending across the wire, but I'd suggest just serializing the data part if you can, and avoid sending a overly complicated object tree. Also take a close look about what you actually serialize. I remember once using serialization to send client state over to a server, and it was going really slow. On analysis, we found that one of the client classes had a reference back to a UI component ... which had a reference to its parent ... which had a reference to
its parent plus all its children ... and so on. Yes, we were unintentionally serializing the entire user interface along with the data.
Assuming you're not as dumb as we were back then, then compressing the data might help. Also it's not hard. Just stick a ZipOutputStream somewhere in your stack. You know, something like:
Actually, I can't remember if that's enough for ZipOutputStream, or if you have to prime it with a ZipEntry first. It's been awhile since I've used it, but I know it was pretty easy. Anyway, that might help if your network is especially slow and/or your data compresses nicely. It's worth trying anyway.