JDK源码解析之 Java.lang.Compiler
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相关推荐
- JDK源码解析之 java.lang.Exception
异常.是所有异常的基类,用于标识一般的程序运行问题.这些问题通常描述一些会被应用程序捕获的反常情况. 一.源码部分 //继承了java.lang.Throwable public class Exce ...
- JDK源码解析之 java.lang.Error
java.lang.Error 错误.是所有错误的基类,用于标识严重的程序运行问题.这些问题通常描述一些不应被应用程序捕获的反常情况. 一.源码部分 //继承了java.lang.Throwable ...
- JDK源码解析之 java.lang.Thread
位于java.lang包下的Thread类是非常重要的线程类,它实现了Runnable接口,今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态.上下文切换 ...
- JDK源码解析之 java.lang.Integer
teger 基本数据类型int 的包装类 Integer 类型的对象包含一个 int 类型的字段 一.类定义 public final class Integer extends Number imp ...
- JDK源码解析之 Java.lang.Object
Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起.作为其他所有类的基类,Object具有哪些属性和行为,是Java语言设计背后的思维体现. Object类位于ja ...
- JDK源码解析之 Java.lang.Byte
byte,即字节,由8位的二进制组成.在Java中,byte类型的数据是8位带符号的二进制数,以二进制补码表示的整数 取值范围:默认值为0,最小值为-128(-27);最大值是127(27-1) By ...
- JDK源码解析之 Java.lang.String
String 类代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现. 字符串是常量:它们的值在创建之后不能更改.字符串缓冲区支持可变的字符串.因 ...
- JDK源码解析之 Java.lang.Package
如果我们在Class对象上调用getPackage方法,就可以得到描述该类所在包的Package对象(Package类是在java.lang中定义的).我们也可以用包名通过调用静态方法getPacka ...
- JDK源码解析之 java.lang.System
一个和系统环境进行交互的类. System不允许被实例化, 而且是一个final类 一.不能实例化 private System() {} 二.成员变量 public final static Inp ...
最新文章
- inux 下查看服务器负载均衡
- poj -- 2288 Islands and Bridges
- 掌握这个姿势,女友不再叨叨叨
- 【TypeScript系列教程03】基础语法
- 详细解析Linux /etc/passwd文件
- java监听机制_详解java的事件监听机制和观察者设计模式
- 【干货】卷积神经网络Alex-Net、VGG-Nets、Network-In-Network案例分析
- mysql 重复了更新_MYSql id相同就更新
- telnet 测试IP和端口命令
- 编码:隐匿在计算机软硬件背后的语言(1)--编码到二进制数字系统
- Django实现统计网站访问次数、访问 ip 、受访页面
- [报错解决]CondaSSLError: OpenSSL appears to be unavailable on this machine. OpenSSL is required to downl
- 云原生|kubernetes|etcd集群详细介绍+安装部署+调优
- 外部联接(Outer Join)和笛卡尔积(Cartesian Product)
- Common Language Extension(CLE) 介绍
- 体脂秤方案开发脂肪秤方案设计
- 数电6_1——时序逻辑电路概述(很久整理的,没有下文)
- mysql修改表前缀操作步骤
- gregorian(格里高力)历转换公历
- Python模块之---Pexpect
热门文章
- oracle导入导出版本规则,oracle expdp impdp 导出导入(支持高版本到低版本)
- 四则运算计算器c语言switch,设计一个五个数进行四则运算的计算器 c语言
- 微观经济学如何计算机会成本,【微观经济学】机会成本
- 服务器的可维护性,可靠性和可维护性
- mysql 哈希缓存_MySQL数据库性能优化思路总结
- android是语言吗,android – 内容描述应该是多种语言吗?
- Linux配置rsylogs日志发送,syslog强大而安全的日志处理系统
- vue 全局键盘_如何解决ios input框唤起软键盘不灵敏问题?
- oracle没有注册mdsdora,oracle rac一个节点服务注册不上,必须重启监听才能注册上,各位大神帮忙看一下...
- ie8不兼容java项目_常见IE8兼容性问题及解决