Java 动态编译组件 & 类动态加载】的更多相关文章

1.JDK6 动态编译组件 Java SE 6 之后自身集成了运行时编译的组件:javax.tools,存放在 tools.jar 包里,可以实现 Java 源代码编译,帮助扩展静态应用程序.该包中提供主要类可以从 Java String.StringBuffer 或其他 CharSequence 中获取源代码并进行编译.接下来通过代码一步步讲述如何利用 JDK6 特性进行运行时编译. // 通过 ToolProvider 取得 JavaCompiler 对象,JavaCompiler 对象是动…
一.背景: 在面试中,在java基础方面,类的加载顺序经常被问及,很多时候我们是搞不清楚到底类的加载顺序是怎么样的,那么今天我们就来看看带有继承的类的加载顺序到底是怎么一回事?在此记下也方便以后复习巩固! 二.测试步骤: 1.父类代码 package com.hafiz.zhang; public class Fu { private int i = print("this is father common variable"); private static int j = prin…
反射的基础: java.lang.Class Class类的实例对象,用于记录类描述信息. 源码说:represent classes and interfaces in a running Java application Class类没有公共的构造方法,无法通过new运算符实例化:只能通过对象的getClass方法,或是通过Class.forName(-)来获得实例. static ClassforName(String className)throws ClassNotFoundExcep…
JVM和类的关系 当我们调用JAVA命令运行某个java程序时,该命令将会启动一条java虚拟机进程,不管该java程序有多么复杂,该程序启动了多少个线程,它们都处于该java虚拟机进程里.正如前面介绍的,同一个JVM的所有线程.所有变量都处于同一个进程里,它们都使用该JVM进程的内存区. 当系统出现以下几种情况时,JVM进程将被终止: l  程序运行到最后正常结束. l  程序运行到使用System.exit()或Runtime.getRuntime().exit()代码结束程序 l  程序执…
1 本文概要 本章介绍Java类的加载.连接和初始化的深入知识,并重点介绍Java反射相关的内容.本章知识偏底层点,这些运行原理有助于我们更好的把我java程序的运行.而且Java类加载器除了根加载器之外,其他类加载器都是使用Java语言编写的,所以我们完全可以开发自己的类加载器,通过使用自定义的类加载器,完成一些特定的功能. 本章重点介绍java.lang.reflect包下的接口和类,包括Class.Method.Field.Constructor和Array,这些类分别代表类.方法.属性.…
JVM和类 调用Java命令运行Java程序时,该命令将会启动一条Java虚拟机进程,不管该Java程序启动了多少条线程,创建了多少个变量,它们都处于该Java虚拟机进程里,共享该JVM进程的内存区.当系统出现以下几种情况时,JVM进程将被终止: 程序运行到最后正常结束: 程序运行到使用System.exit()或Runtime.getRuntime.exit()代码结束程序: 程序运行过程中遇到未捕获的异常或错误而结束: 程序所在的平台强制结束了JVM进程. 类的加载 当程序主动使用某个类时,…
简介: 类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的. Java Applet 需要从远程下载 Java 类文件到浏览器中并执行. 现在类加载器在 Web 容器和 OSGi 中得到了广泛的使用. 1,java.lang.ClassLoader类介绍 1,java.lang.ClassLoader类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个 Java 类,即 java.lang.Class类…
类的加载方式 静态加载类,是编译时刻加载 动态加载类,是运行时刻加载 new创建对象:是静态加载类,在编译时刻就需要加载所有的可能使用到的类.有一个类有问题(如不存在),都不能通过编译,会报错. Class.forName(类的全称):通过动态加载类,用到一个类时,才进行加载. 功能性的类建议尽量使用动态加载,并对新添的类实现功能性接口(标准),这样就不用重新编译 import T1.OfficeAble; public class Office1 { public static void ma…
当看到"类的加载机制",肯定很多人都在想我平时也不接触啊,工作中无非就是写代码,不会了可以百度,至于类,jvm是怎么加载的我一点也不需要关心.在我刚开始工作的时候也觉得这些底层的内容距离我还很遥远,根本不用关系,可是随着做开发的时间越来越长,慢慢的已经意识到虚拟机相关要领的重要性.一直想写篇和虚拟机相关的文章,无奈之前由于各种原因一直没写,年初工作还不是很忙,抽时间来慢慢完善jvm的内容. 好了,不说废话了,大家一起来看下代码吧,都来猜猜下面的两份代码的执行结果是什么? class S…
转自http://blog.csdn.net/jamesjxin/article/details/46606307 前言 在日常Java开发中,我们经常碰到java.lang.NoClassDefFoundError这样的错误,需要花费很多时间去找错误的原因,具体是哪个类不见了?类明明还在,为什么找不到?而且我们很容易把java.lang.NoClassDefFoundError和java.lang.ClassNotfoundException这两个错误搞混,事实上这两个错误是完全不同的.我们往…