A just-in-time compiler is a hybrid of an interpreter and a compiler. The interpreter runs a program, keeping track of how many times it uses each function or method. After the number of uses reaches some threshhold value, the function or method is compiled to native (machine) code, and from then on the native code is used when that function or method is used. That can greatly speed up execution of programs.