首页 文章
  • 10 votes
     answers
     views

    引擎盖下的Groovy / Scala / Java

    我用 Java 就像6-7岁,然后几个月前我发现 Groovy 并开始节省大量的打字..然后我想知道某些事情是如何在幕后工作的(因为常规的表现真的很差)而且明白要给予动态输入每个 Groovy 对象都是一个 MetaClass 对象,它处理JVM无法自行处理的所有事情 . 当然,这会在您编写的内容和执行的内容之间引入一层,从而减慢所有内容 . 然后有一天我开始得到关于 Scala 的一些信息 . ...
  • 4 votes
     answers
     views

    如何在Scala中创建AnyRef的现有Java类子类?

    Scala继承层次结构图: Scala for the Impatient中的上图显示了所有Java类都是 AnyRef 类的子类 . 图8-1显示了Scala类的继承层次结构 . 与Java中的基元类型对应的类以及类型Unit扩展AnyVal . 所有其他类都是AnyRef类的子类,它是Java或.NET虚拟机中Object类的同义词 . AnyVal和AnyRef都扩展了Any类,即层次...
  • 209 votes
     answers
     views

    你能“编译”PHP代码吗?

    我知道PHP在服务器上运行之前被编译为字节代码,然后可以缓存该字节代码,这样就不必为每个Web访问重新解释整个脚本 . 但是你可以“编译”php并上传一个二进制文件,它只能由字节码解释器运行吗?
  • 139 votes
     answers
     views

    字节码功能在Java语言中不可用

    目前(Java 6)您可以在Java字节码中使用Java语言无法做到的事情吗? 我知道两者都是图灵完整的,所以读“可以做”为“可以做得更快/更好,或者只是以不同的方式” . 我正在考虑像 invokedynamic 这样的额外字节码,这些字节码不能使用Java生成,除了特定的字节码是针对未来的版本 .
  • 6 votes
     answers
     views

    创建一个简单的领域特定语言

    我很想知道如何创建特定于域的语言 . 现在域是非常基本的,只是有一些变量并运行一些循环,if语句 . 编辑:语言将以非英语为基础,语法非常简单 . 我正在考虑将Java虚拟机作为目标,即编译为Java字节代码 . 目前我知道如何使用ANTLR编写一些简单的语法 . 我知道ANTLR会创建一个词法分析器和解析器但是我该如何从这里前进? 关于语义分析:它是必须手动编写还是有一些工具来创建它? ...
  • 114 votes
     answers
     views

    如何在字节码级别实现Scala中的模式匹配?

    如何在字节码级别实现Scala中的模式匹配? 它是否像一系列 if (x instanceof Foo) 构造,或其他什么?它的性能影响是什么? 例如,给定以下代码(来自Scala By Example第46-48页), eval 方法的等效Java代码如何? abstract class Expr case class Number(n: Int) extends Expr case class...
  • 12 votes
     answers
     views

    Java类型擦除擦除我的泛型类型?

    我认为java擦除会在编译时擦除泛型类型,但是当我自己测试它时,我意识到在Bytecode中有一些关于泛型类型的信息 . 这是我的测试: 我写了2节课: import java.util.*; public class Test { List integerList; } 和 import java.util.*; public class Test { List<Inte...
  • 5 votes
     answers
     views

    在ASM字节码中打印方法很漂亮

    我正在尝试(没有成功)仅打印给定方法的内容 . 以下代码几乎可以解决问题: class MyTraceMethodVisitor extends MethodVisitor { public MyTraceMethodVisitor(MethodVisitor mv) { super(Opcodes.ASM4, mv); } ...
  • 2 votes
     answers
     views

    ASM字节码操作:测量方法执行速度

    我是ASM和字节码操作的新手 . 我的任务很简单:我告诉我的代理人要访问哪个类和方法,它会测量该方法的执行时间 . 测量是用Guava图书馆的秒表课程完成的 . ASM基本上围绕方法体,方法是在开始时启动秒表并在方法体的末尾停止它并打印出执行时间 . 这在一些方法上有效,但在大多数方法上都失败了 . 这是ASM访问目标方法开头的部分 . package com.agent.agentclasse...
  • 8 votes
     answers
     views

    在ASM的字节码方法内联期间重新映射变量

    我正在使用ASM进行在线字节码方法内联优化 . 我的更改基于示例 3.2.6 Inline Method (http://asm.ow2.org/current/asm-transformations.pdf) . 测试示例(在Caller :: test中内联被调用者的计算(int,int))是: public class Caller { final Callee _callee; ...
  • 2 votes
     answers
     views

    内联方法体中invokevirtual的意外指令和参数

    我按照http://asm.ow2.org/current/asm-transformations.pdf中“3.2.6内联方法”中的示例代码,将MethodNode内联到调用站点 . 我的问题是内联后生成的字节码中显示了一些意外的指令(这些字节码与我的代码不一致),只有当 ifeq 在内联方法体之后且堆栈上的变量由xLoad加载时才会出现问题 . 我还没有找到问题的根本原因 . 现在我开始删除所...
  • 0 votes
     answers
     views

    ASM字节码操作 - 覆盖visitLineNumber

    我是ASM Bytecode Manipulation工具的新手 . 我正在关注链接 - http://cs.ucla.edu/~msb/cs239-tutorial/ 我有一个java代码,如下所示 - public static int m(int a, int b) { if (a < 2) a++; else b++; return a + b; }...
  • 6 votes
     answers
     views

    基于JVM的语言/运行时如何生成Java字节码?

    JVM上有几种语言/运行时:例如 JRuby , Groovy , Jython , Clojure , Rhino , Scala 等等...... 这些 generate Java字节码怎么办? 这样做有标准化的 libraries 吗? 生成的字节码如何获得 executed ? (或者我的假设是错误的,并且一些提到的语言会生成 not 生成字节码?)
  • 7 votes
     answers
     views

    将抽象语法树转换为字节代码

    我正在努力学习构建一个简单的编译器作为业余爱好 . 我的目标是Java虚拟机 . 我使用ANTLR插件为Eclipse编写了一个简单的语法 . 有人告诉我,Antlr生成的AST上有一个称为方法节点的东西,必须调用它 . 我打算用ASM生成字节码 . 那么什么是方法节点?如何从ASM调用它并使其访问方法指令? 那么编译器的语义分析器呢?应该手动编写还是有任何生成器?
  • 11 votes
     answers
     views

    无法找到com / google / firebase的字节代码

    我今天进行了以下升级 Android Studio 3.0 - > 3.1 在 build.gradle 依赖项{classpath'com.android.tools.build:grad: 3.0.1 ' - > 3.1.0 } 在 gradle/wrapper/gradle-wrapper.properties distributionUrl = htt...

热门问题