`
啸笑天
  • 浏览: 3466069 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

groovy解析hello world

 
阅读更多

因为知道他底层还是在jvm上运行的所以应该有个函数入口main函数于是反编译看看他的class

 

在d盘下新建:Hello.groovy

 

println 'hello world'

 

groovyc Hello.groovy

生成Hello.class

 

反编译后:

 

import groovy.lang.Binding;
import groovy.lang.Script;
import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
import org.codehaus.groovy.runtime.callsite.CallSite;
import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;

public class Hello extends Script
{
  public Hello()
  {
    Hello this;
    CallSite[] arrayOfCallSite = $getCallSiteArray();
  }

  public Hello(Binding arg1)
  {
    Binding context;
    CallSite[] arrayOfCallSite = $getCallSiteArray();
    ScriptBytecodeAdapter.invokeMethodOnSuperN($get$$class$groovy$lang$Script(), this, "setBinding", new Object[] { context });
  }

  public static void main(String[] args)
  {
    CallSite[] arrayOfCallSite = $getCallSiteArray();
    arrayOfCallSite[0].call($get$$class$org$codehaus$groovy$runtime$InvokerHelper(), $get$$class$Hello(), args);
  }

  public Object run()
  {
    CallSite[] arrayOfCallSite = $getCallSiteArray(); return arrayOfCallSite[1].callCurrent(this, "hello world"); return null;
  }

  static
  {
    __$swapInit();
    Long localLong1 = (Long)DefaultTypeTransformation.box(0L);
    __timeStamp__239_neverHappen1330265162012 = localLong1.longValue();
    Long localLong2 = (Long)DefaultTypeTransformation.box(1330265162012L);
    __timeStamp = localLong2.longValue();
  }
}
 

初步一看应该是main中调用无参构造函Hello生成Hello对象,然后调用run()方法。其他对象待查看api,源码来慢慢理解消化。

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    8种Java Web框架安装手记及HelloWorld

    创建Controller类,配置视图解析,启动应用,即可访问HelloWorld。 6. **Struts** Struts是最早的Java MVC框架之一,它提供了强大的MVC架构。安装Struts需要JDK和Apache Tomcat服务器,通过Maven或Ivy管理依赖。...

    Java调用Groovy

    "class HelloWorld { void say() { println 'Hello, World!' } }"); GroovyObject groovyInstance = groovyClass.newInstance(); groovyInstance.invokeMethod("say", null); ``` 在这个例子中,我们动态地定义了...

    Groovy学习笔记 Struts2集成--Groovy类作为Action

    这个配置将URL `/helloWorld` 映射到 `HelloWorldAction`,并把'success'结果解析为`HelloWorld.jsp`页面。 4. **运行和测试**:完成以上步骤后,你可以通过HTTP请求访问`http://yourserver/yourapp/helloWorld`来...

    Groovy介绍-入门

    在正则表达式方面,Groovy支持Java的正则匹配,如`"Hello World!" =~ /Hello/`。还能使用`=~`操作符进行模式匹配,并可以替换匹配到的子串,如`"1.23".replaceAll(/./){ ch->ch.next()} == '2/34'`,这个例子将每个...

    groovy

    比如,Groovy支持直接打印语句`println 'hello world'`,而无需像Java那样定义类和主方法。此外,Groovy也允许使用Closures,这是一种强大的功能,可以用来创建匿名函数或者处理集合数据。 SwingBuilder是Groovy中...

    java在嵌入运行groovy代码1

    它是一个 ClassLoader 的子类,可以解析 Groovy 源代码并生成对应的 Class 对象。如果你的 Groovy 脚本包含类的定义,使用 GroovyClassLoader 更为合适。 3. JSR-223(Java Scripting API)是 Java 平台的标准,...

    groovy book

    例如,“Hello, World!”程序在Groovy中的实现可以简单至一行代码,无需显式调用`System.out.println`。 #### Closures:强大的函数式编程工具 闭包是Groovy的一个关键特性,它们是可重用且可分配的代码块,可以...

    Groovy+quick+start.pdf

    ### Groovy 快速入门知识点解析 #### 一、集合 **1.1 List** - **定义**: 在 Groovy 中,`List` 是一种非常常用的数据结构,它类似于 Java 的 `List`,能够存储一系列的对象,并且保持它们的顺序。 - **示例代码*...

    JavaFxTest:有关如何使JavaFx在Repl.it,Hello World和简单按钮上使用的示例文件

    下面我们将逐步解析如何在Repl.it上使用JavaFX创建"Hello World"程序: 1. **创建项目**:在Repl.it上创建一个新的Java项目,并确保选用的是Java 11或更高版本,因为JavaFX从Java 11开始作为独立模块提供。 2. **...

    AI-Tutorial-Tess4J-Example:Tess4j的Hello World示例

    本教程将深入解析使用Tess4J实现的“Hello World”示例,以帮助初学者理解如何在Java项目中集成Tess4J进行OCR操作。 **一、Tess4J简介** Tess4J是Tesseract OCR的Java绑定库,它允许Java开发者通过简单的API调用来...

    android使用jsoup 解析html文件

    例如,将所有`<p>`标签内的文本替换为"Hello, World!": ```java for (Element paragraph : paragraphs) { paragraph.text("Hello, World!"); } ``` 5. **生成新的HTML** 完成内容替换后,可以使用`document....

    grails app

    虽然我们没有图片,但我们可以从文件名"Hello"推测,这可能是应用的初始控制器或服务,或者是一个简单的"Hello, World!"示例。 4. **控制器(Controllers)** 在Grails中,控制器负责处理HTTP请求,调用服务并准备...

    Android基于ksoap2的WebService通信客户端demo

    例如,假设有一个名为"HelloWorld"的服务方法,参数为一个字符串,可以这样创建请求: ```java SoapObject request = new SoapObject("http://tempuri.org/", "HelloWorld"); request.addProperty("inputString", ...

    groovy代码-测试正则表达式

    def text = "Hello, World!" def pattern = /Hello/ def match = text =~ pattern ``` 这里的`match`变量将包含匹配的结果。 3. **`Pattern`和`Matcher`** 如果你想对复杂的正则表达式进行更细粒度的操作,...

    JAVA 创建读取解析二维码

    这段代码会生成一个包含文本"Hello, World!"的二维码,并保存为PNG图像文件。 2. **读取和解析二维码** 要读取和解析二维码,你可以使用`com.google.zxing.MultiFormatReader`类。以下是一个简单的示例: ```java...

    jvm中可用的动态脚本引擎和动态代码执行

    groovyEngine.eval("println 'Hello, Groovy World!'"); ``` 动态代码执行在许多场景下非常有用,比如自动化测试、配置文件的动态解析、热更新以及在运行时根据需求生成代码等。这种能力使得Java应用程序能够适应...

Global site tag (gtag.js) - Google Analytics