".class" files can be easily decompiled, and there's no way around that.
There are programs that turn Java into machine-executable code (same as C code). This breaks portability, and of course the compilers will usually lag behind the JVM in Java compatability, but they exist. See
gcj.