Java OOP can be used to implement a new layer of "language" on top of it. This new "language" could be FP. Obviously, in this situation the "language" can only be executed in interpreted mode, unless you are able to compile it into JVM bytecode. http://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule