|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。
在方才一个通不外Java字节码校验的例子里,我们看到JVM会对其所加载的.class文件做校验,以包管范例平安。但Java里有这么一种情形,是编译器和JVM的字节码校验都没法检测到,而要到实践运转的时候才干发明的毛病——数组的协变招致的范例静态体系毛病。
仍是像前一帖一样,用ASM来天生字节码:
Java代码- importjava.io.FileOutputStream;
- importorg.objectweb.asm.ClassWriter;
- importorg.objectweb.asm.MethodVisitor;
- importorg.objectweb.asm.Opcodes;
- publicclassTestASMimplementsOpcodes{
- publicstaticvoidmain(String[]args)throwsException{
- ClassWritercw=newClassWriter(0);
- cw.visit(
- V1_5,//classformatversion
- ACC_PUBLIC,//classmodifiers
- "TestVerification",//classnamefullyqualifiedname
- null,//genericsignature
- "java/lang/Object",//superclassfullyqualifiedname
- newString[]{}//implementedinterfaces
- );
- MethodVisitormv=cw.visitMethod(
- ACC_PUBLIC+ACC_STATIC,//accessmodifiers
- "main",//methodname
- "([Ljava/lang/String;)V",//methoddescription
- null,//genericsignature
- null//exceptions
- );
- mv.visitCode();
- mv.visitInsn(ICONST_1);
- mv.visitTypeInsn(ANEWARRAY,"java/lang/Float");
- mv.visitTypeInsn(CHECKCAST,"[Ljava/lang/Object;");
- mv.visitVarInsn(ASTORE,0);
- mv.visitVarInsn(ALOAD,0);
- mv.visitInsn(ICONST_0);
- mv.visitLdcInsn("astring");
- mv.visitInsn(AASTORE);
- mv.visitVarInsn(ALOAD,0);
- mv.visitInsn(ICONST_0);
- mv.visitInsn(AALOAD);
- mv.visitMethodInsn(INVOKEVIRTUAL,"java/lang/Object","toString","()V");
- mv.visitInsn(RETURN);
- mv.visitMaxs(3,1);
- mv.visitEnd();//endmethod
- cw.visitEnd();//endclass
- byte[]clz=cw.toByteArray();
- FileOutputStreamout=newFileOutputStream("TestVerification.class");
- out.write(clz);
- out.close();
- }
- }
复制代码 <p>
最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。 |
|