Java Design: Building Better Apps and Applets