1. A method for compiling the bytecodes of an intermediate language, by a compiler having system calls and metadata content, wherein the bytecodes are compiled into Java bytecodes for use in a Java runtime environment, said method comprising: generating a virtual stack content by performing a static analysis of the intermediate language bytecodes; decoding the variable types of the intermediate language bytecodes and producing virtual stack element types; producing the Java bytecodes using said virtual stack element types; and generating at least one Java class file, thereby enabling a programmer to develop software applications executable in a Java runtime environment.