关于代码方面论文范例,与代码动态生成技术提升Java程序灵活性相关毕业论文网
本论文是一篇关于代码方面毕业论文网,关于代码动态生成技术提升Java程序灵活性相关电大毕业论文范文。免费优秀的关于代码及方法及文件方面论文范文资料,适合代码论文写作的大学硕士及本科毕业论文开题报告范文和学术职称论文参考文献下载。
sfile等于用ASM的ClasssWriter的toByteArray()获得的字节数组;returndefineClass(name,classfile,0,classfile.length);
}};
Class<>c=myClassLoader.loadClass(name);---------------------------------------------------------------------------------------------------------------------
publicstaticvoidpremain(StringagentArgs,Instrumentationinst){
ClassFileTransformertransform等于newClassFileTransformer(){
publicbyte[]transform(ClassLoaderloader,Stringclassname,Class<>clazz,
ProtectionDomaindomain,byte[]classfile)throwsIllegalClassFormatException{
if(当前处理的是需要变换的类代码){
byte[]newClassfile等于用ASM对classfile变换后获得的新数组;
returnnewClassfile;
}elsereturnnull;
}};
inst.addTransformer(transform,false);
}]
图3动态生成代码的装载
在不宜使用自定义类装载器的场合,也可以用java.lang.instrument包[2]完成代码的动态变换和生成.它有ClassFile-
Transformer和Instrumentation两个接口,ClassFileTransformer由用户实现,完成代码变换,它定义了transform方法,会在装载器装载了新类,对其进行合法性验证之前执行.通过覆写该方法,用户可以拦截新载入的类,对其进行分类、检测、增删、修改,然后将变换后的新代码交JVM执行.使用这个包时,用户要提供一个包含premain方法的类.通过适当的命令,使系统在main方法执行之前执行该方法,用JVM提供的instrumentation对象添加用户自定义的代码变换方法,使所有新装载的类都经过transform的处理,在实现了期望的变换后被JVM执行.图3的下半部分演示了这种方案.
学会这些内容的关键是理解Java的类装载过程和对应方法,相对来说,前一方案比较容易掌握,后一方案适用于内部已封装使用了自定义的、非常规的类装载器的复杂应用架构,教学时可根据实际情况进行选择.
5结束语
学习这些知识,可以帮助学生了解JVM的内部运行机制,更好地掌握那些通过动态代码生成技术实现的新概念、新模式,使他们能透过语法层面,从本质上深入领会这些内容.学习这些知识也可使学生掌握这种能在运行时生成、修改类代码的编程技能.在教学中,除了集中一些课时讲述以上内容外,还可以布置一些课题,让学生自己实践,比如“反射”代码的替换、动态代理的生成、接口实现的按需配置等,要鼓励学生发挥自己的想象力和创造性,用这种技术实现静态的Java语言所无法完成的功能,培养起勇于开拓,善于创新的良好习惯.
参考文献:
[1]TimLindholm,FrankYellin.TheJavaVirtualMachineSpecification
SecondEdition[M].Addison-WesleyProfessional,1999.4.
[2]Oracleco.JavaPlatform,StandardEdition7APISpecification
[EB/OL].http://docs.oracle./javase/7/docs/api/
[3]EricBruon.ASM4.0AJavabytecodeengineeringlibrary[EB/
OL].http://download.fe.objectweb./asm/asm4-guide.pdf
[4]周志明.深入理解Java虚拟机[M].机械工业出版社,2011.
[5]EugeneKuleshov.UsingtheASMframeworktoimplement
monJavabytecodetransformationpatterns[J].http://asm.ow2./current/asm-transformations.pdf
关于代码方面论文范例,与代码动态生成技术提升Java程序灵活性相关毕业论文网参考文献资料: