code: public Compiler createCompiler() {
          if (jspCompiler != null ) {
              return jspCompiler;
          }
          jspCompiler = null;
          if (options.getCompilerClassName() != null) {
              jspCompiler = createCompiler(options.getCompilerClassName());
          } else {
              if (options.getCompiler() == null) {
                  jspCompiler = createCompiler("org.apache.jasper.compiler.JDTCompiler");
                  if (jspCompiler == null) {
                      jspCompiler = createCompiler("org.apache.jasper.compiler.AntCompiler");
                  }
              } else {
                  jspCompiler = createCompiler("org.apache.jasper.compiler.AntCompiler");
                  if (jspCompiler == null) {
                      jspCompiler = createCompiler("org.apache.jasper.compiler.JDTCompiler");
                  }
              }
          }
          if (jspCompiler == null) {
              throw new IllegalStateException(Localizer.getMessage("jsp.error.compiler.config",
                      options.getCompilerClassName(), options.getCompiler()));
          }
          jspCompiler.init(this, jsw);
          return jspCompiler;
      }
docs: Create a "Compiler" object based on some init param data. This
  is not done yet. Right now we're just hardcoding the actual
  compilers that are created.
  @return the Java compiler wrapper