Java is only partially interperted, and even a fully interpertiation is marginally slower than a native application. Java compiles portions of the at run time to make them faster in a process called Just In Time (JIT) compilation. As I recall, C# is also interpreted (possibly with JIT like Java), so it's the worst of both worlds . As for ugly, the Swing Set's theme can be replaced with something more to the user's taste, but thats a very subjective matter. And you can even use the Abstract Windowing Toolkit if you want a Win95/98/XP look.