I just started a class dealing with object oriented programming....

In my younger days, I used to spend a fair amount of time "cracking" nag screens, time trials, etc. The reason I was able to do so (with relative ease in some cases) was because when programs were compiled, sometimes they left little loopholes that the developers didn't catch, or didn't realize were happening... and it was usually something simple like:

cmp eax,eax
jmp if not equal, blah, blah, blah

Our instructor (and the films we have watched) have made a big deal about ease of use, compatibility, etc... (I realize it's a lot of propoganda)

Since Java is a compiled language, how is it for programming secure applications? Any thoughts? Does it leave similar holes? Is that just the nature of any language that has to be compiled?