First and foremost, the wallet of my dreams must never impose ANY restrictions on the user. It can warn that what I'm going might be rejected by the network, but it should always always let me do it, no matter how stupid it thinks my request is.
Second, the wallet of my dreams would definitely not depend on Java.