Java is closer to WORA than any other platform is or has been. Including .Not . If you are careful, a good developer can write portable enterprise-level code, and if non-portable code isolated properly with good documentation, and IF there is clear separation of tiers / responsibilities, portability can be and is possible. With a small effort.
J2EE is specced clearly to allow your apps to be portable, but in reality some proprietary glue is necessary. If, however, a designer is not careful, then he/she may just get locked in to a vendor. But is that Java's fault??? I don't think so pal.
If, however, the ultimate goal for any project is total WORA, then you're crippling yourself with unreasonable and unnnecessary demands. But to criticise (and you sound like you've never been anywhere near a production quality J2EE project) comments like yours are simple ignorance.