- 浏览: 152352 次
最新评论
文章列表
java内存动态编译执行
- 博客分类:
- Java
一般的java的动态编译是需要先生成java文件,然后编译成class,最后用classloader加载进来生成最终的实例的。 本例程则不需要生成任何文件,一切在内存中进行。
标签: <无>
代码片段(6)[全屏查看所有代码]
动态生成java、动态编译、动态加载
- 博客分类:
- Java
我曾经见过一个“规则引擎”,是在应用系统web界面直接编写java代码,然后保存后,规则即生效,我一直很是奇怪,这是如何实现的呢?实际这就好像jsp,被中间件动态的编译成java文件,有被动态的编译成class,同时又动态的 ...
class文件简介及加载
Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象:
class字节码文件是根据JVM虚拟机规范中规定的字节码组织规则生成的、具体class文件是怎样组织类信息的,可以参考 此博文:深入理解Java Class文件格式系列。或者是Java虚拟机规范。
下面通过一段代码演示手动加载 cla
在我们使用形如 ClassName object = new ClassName(); 的语句进行创建实例的时候,我们默认 ClassName 已经在系统内存在的了,所以直接使用new 的方式进行创建。
事实上,在启动虚拟机的时候,我们定义在系统内的类通过类的加 ...
最简单的引用外部jar包执行,首先把src下的项目源代码打包成jar包,然后执行java命令 ,class文件同理(先加载jar包,再找到main方法入口、传入参数)
java -classpath 引用jar包的路径(多个用;隔开,首先要把自身项目的jar包加载进来,然后才是外部引用jar包) base.BaseDao 参数1 参数2
如:项目源代码jar包photo.jar包main方法所在路径base.BaseDao,引用jar包ojdbc6.jar,两个jar包在d:/bat目录下,则执行java命令
java -classpath photo.jar;ojdbc6.jar ...
Java 动态编译组件 & 类动态加载
- 博客分类:
- Java
1、JDK6 动态编译组件
Java SE 6 之后自身集成了运行时编译的组件:javax.tools,存放在 tools.jar 包里,可以实现 Java 源代码编译,帮助扩展静态应用程序。该包中提供主要类可以从 Java String、StringBuffer 或其他 CharSequence 中获取源代码并进行编译。接下来通过代码一步步讲述如何利用 JDK6 特性进行运行时编译。
// 通过 ToolProvider 取得 JavaCompiler 对象,JavaCompiler 对象是动态编译工具的主要对象
JavaCompiler compiler = Too ...
动态生成、编译、运行java文件
- 博客分类:
- Java
动态生成,编译,运行java文件,jdk动态代理底层实现就是利用此方法,demo已上传。
Java代码
package com.code.test;
import java.io.BufferedReader;
一、使用 JavaCompiler 接口来编译 java 源程序(最简单的)
使用 Java API 来编译 Java 源程式有非常多方法,目前让我们来看一种最简单的方法,通过 JavaCompiler 进行编译。
我们能通过 ToolProvider 类的静态方法 getSystemJavaCompiler 来得到一个 JavaCompiler 接 口的实例。
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
JavaCompiler 中最核心的方法是 run。通过这个方法能编译 java 源程序。这 ...
要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。
元注解:
元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解: 1.@Target, 2.@Retention, 3.@Documented, 4.@Inherited 这些类型和它们所支持的类在java.lang.annotation包中可以找到。下面我们看一下每个元注解的作用和相应分 ...
如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很重要的一部分就是创建于使用注解处理器。Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。
注解处理器类库(java.lang.reflect.AnnotatedElement):
Java使用Annotation接口来代表程序元素前面的注解,该接口是所有Annotation类型的父接口。除此之外,Java在java.lang.reflect 包下新增了AnnotatedElement接口,该接口代表程序中可以接受注解的程序元素,该接口主要有如下几个实现类:
C ...
读JDK动态代理源码(Proxy类)
- 博客分类:
- Java
读源码,怕过两天又忘记了,还是记录下吧..
动态代理最重要的实现就是Proxy.newInstance ,那我们直接看这个方法
public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h)//这里有三个参数,第一个是传入classloader,一般情况是传入当前的classloader.但是我在上一节模拟实现里传入的是URL loader..第二个参数表示的是接口,第三个是Invocationhandler,除了第 ...
JDK动态代理实现原理-1
- 博客分类:
- Java
之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白。比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白了。 废话不多说了,先来看一下JDK的动态是怎么用的。
Java代码
package dynamic.proxy;
jdk动态代理实现原理
- 博客分类:
- Java
写在前面:
大神和diao炸天的亲请绕道..
关于代理模式的概念这里省去,大家可以放鸟尽情搜..
关于为什么叫动态代理,个人理解是代理的类是在运行时动态生成的,大家也可以参考网上的理解..
文笔很差,所以文字较少,都在代码和注释中..
=======一点不华丽的分割线-------------------------
开门见山,lets go..
java中可以通过jdk提供的 Proxy.newProxyInstance静态方法来创建动态代理对象,下面先来看看这个方法的实现
[java] view plaincopy
利用自定义Java注解实现资源注入
- 博客分类:
- Java
这里是想介绍一下如何通过Java的注解机制,实现对bean资源的注入。主要介绍实现的方法,至于例子的实用性不必讨论。需求:一个应用有两个数据库,分别为DB-A,DB-B。假设持久层框架使用iBatis来实现,那么SqlMapClient对象在创建时,对于两个不同的DB连接要有两个不同的SqlMapClient对象,假设我们有一个Service类为MyService.java,该类中有两个SqlMapClient对象sqlMapA、sqlMapB分别对应着DB-A、DB-B。先看看我们的SqlMapClient.java类:(自定义SqlMapClient类,用来演示。)
深入理解Java:注解(Annotation)
- 博客分类:
- Java
Java注解的基础知识点(见下面导图)基本都过了一遍,下一篇我们通过设计一个基于注解的简单的ORM框架,来综合应用和进一步加深对注解的各个知识点的理解和运用。