Compiler类提供支持Java到本机代码编译器和相关服务。在设计上,它作为一个占位符在JIT编译器实现。

一、源码部分

public final class Compiler  {private Compiler() {}               // don't make instancesprivate static native void initialize();private static native void registerNatives();static {registerNatives();java.security.AccessController.doPrivileged(new java.security.PrivilegedAction<Void>() {public Void run() {boolean loaded = false;String jit = System.getProperty("java.compiler");if ((jit != null) && (!jit.equals("NONE")) &&(!jit.equals(""))){try {System.loadLibrary(jit);initialize();loaded = true;} catch (UnsatisfiedLinkError e) {System.err.println("Warning: JIT compiler \"" +jit + "\" not found. Will use interpreter.");}}String info = System.getProperty("java.vm.info");if (loaded) {System.setProperty("java.vm.info", info + ", " + jit);} else {System.setProperty("java.vm.info", info + ", nojit");}return null;}});}//编译指定的类。此方法返回true,如果编译成功;返回false如果编译失败或没有编译器可用。public static native boolean compileClass(Class<?> clazz);//方法编译,其名称与指定字符串匹配的所有类。此方法返回true,如果编译成功;返回false如果编译失败或没有编译器可用。public static native boolean compileClasses(String string);//方法检查参数类型及其字段,并执行一些文档操作。该方法返回一个编译器特定的值,包括null。public static native Object command(Object any);//方法调用会导致编译器恢复运行。public static native void enable();//方法会导致编译器停止运作。public static native void disable();
}

二、总结

Compiler 类是用来 支持java语言转native code,并且支持相关服务。 当java虚拟机启动时,首先检查系统属性 java.Compiler是否存在。 如果存在,假定它是一个库的名称,System.loadLibrary将会加载这个库。 如果加载成功,库中的java_lang_Compiler_start()会被调用。 如果编译器不可用。那么这些方法什么都不会做。

JDK源码解析之 Java.lang.Compiler相关推荐

  1. JDK源码解析之 java.lang.Exception

    异常.是所有异常的基类,用于标识一般的程序运行问题.这些问题通常描述一些会被应用程序捕获的反常情况. 一.源码部分 //继承了java.lang.Throwable public class Exce ...

  2. JDK源码解析之 java.lang.Error

    java.lang.Error 错误.是所有错误的基类,用于标识严重的程序运行问题.这些问题通常描述一些不应被应用程序捕获的反常情况. 一.源码部分 //继承了java.lang.Throwable ...

  3. JDK源码解析之 java.lang.Thread

    位于java.lang包下的Thread类是非常重要的线程类,它实现了Runnable接口,今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态.上下文切换 ...

  4. JDK源码解析之 java.lang.Integer

    teger 基本数据类型int 的包装类 Integer 类型的对象包含一个 int 类型的字段 一.类定义 public final class Integer extends Number imp ...

  5. JDK源码解析之 Java.lang.Object

    Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起.作为其他所有类的基类,Object具有哪些属性和行为,是Java语言设计背后的思维体现. Object类位于ja ...

  6. JDK源码解析之 Java.lang.Byte

    byte,即字节,由8位的二进制组成.在Java中,byte类型的数据是8位带符号的二进制数,以二进制补码表示的整数 取值范围:默认值为0,最小值为-128(-27);最大值是127(27-1) By ...

  7. JDK源码解析之 Java.lang.String

    String 类代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现. 字符串是常量:它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串.因 ...

  8. JDK源码解析之 Java.lang.Package

    如果我们在Class对象上调用getPackage方法,就可以得到描述该类所在包的Package对象(Package类是在java.lang中定义的).我们也可以用包名通过调用静态方法getPacka ...

  9. JDK源码解析之 java.lang.System

    一个和系统环境进行交互的类. System不允许被实例化, 而且是一个final类 一.不能实例化 private System() {} 二.成员变量 public final static Inp ...

最新文章

  1. inux 下查看服务器负载均衡
  2. poj -- 2288 Islands and Bridges
  3. 掌握这个姿势,女友不再叨叨叨
  4. 【TypeScript系列教程03】基础语法
  5. 详细解析Linux /etc/passwd文件
  6. java监听机制_详解java的事件监听机制和观察者设计模式
  7. 【干货】卷积神经网络Alex-Net、VGG-Nets、Network-In-Network案例分析
  8. mysql 重复了更新_MYSql id相同就更新
  9. telnet 测试IP和端口命令
  10. 编码:隐匿在计算机软硬件背后的语言(1)--编码到二进制数字系统
  11. Django实现统计网站访问次数、访问 ip 、受访页面
  12. [报错解决]CondaSSLError: OpenSSL appears to be unavailable on this machine. OpenSSL is required to downl
  13. 云原生|kubernetes|etcd集群详细介绍+安装部署+调优
  14. 外部联接(Outer Join)和笛卡尔积(Cartesian Product)
  15. Common Language Extension(CLE) 介绍
  16. 体脂秤方案开发脂肪秤方案设计
  17. 数电6_1——时序逻辑电路概述(很久整理的,没有下文)
  18. mysql修改表前缀操作步骤
  19. gregorian(格里高力)历转换公历
  20. Python模块之---Pexpect

热门文章

  1. oracle导入导出版本规则,oracle expdp impdp 导出导入(支持高版本到低版本)
  2. 四则运算计算器c语言switch,设计一个五个数进行四则运算的计算器 c语言
  3. 微观经济学如何计算机会成本,【微观经济学】机会成本
  4. 服务器的可维护性,可靠性和可维护性
  5. mysql 哈希缓存_MySQL数据库性能优化思路总结
  6. android是语言吗,android – 内容描述应该是多种语言吗?
  7. Linux配置rsylogs日志发送,syslog强大而安全的日志处理系统
  8. vue 全局键盘_如何解决ios input框唤起软键盘不灵敏问题?
  9. oracle没有注册mdsdora,oracle rac一个节点服务注册不上,必须重启监听才能注册上,各位大神帮忙看一下...
  10. ie8不兼容java项目_常见IE8兼容性问题及解决