Java's two characteristics, the key is that the Java compiler output is not executable code, but byte code bytecode. Bytecode is a set of highly optimized instructions designed to be executed under the Java Runtime system, known as the Java Virtual Machine JVM. In its standard form, the JVM is a byte-code interpreter. For performance reasons, many modern languages are designed to be compiled rather than interpreted. Translating a Java program into bytecode helps it make it easier to run programs in a wide range of environments. In a given system, any Java program can run on the system as long as the system runs the package. Therefore, the interpretation of bytecode is the easiest way to write a real portability program. Explaining the Java program also helps with its security. Because each Java program runs in the Java Virtual Machine control system, the Java Virtual machine can contain this program and can organize it to produce side effects outside the system. Some limitations of the Java language enhance its security. Although Java is designed to interpret executed programs, technically Java does not prevent the dynamic coding of bytecode into native code. A part of the Java Virtual machine is JIT (Just in time), which compiles bytecode into executable code, as needed, in part. It does not say that the entire Java program compiles all the time into executable code, because Java performs various checks that are performed only at run time. So the JIT compiles only the code it needs to run. Java bytecode has been carefully designed because it is easy to use the JIT-compilation technology award bytecode to directly convert to high-performance native code. The Java runtime system still has platform independence while providing this feature.
Java Security and portability