标签: jvm-languages

为JVM生成.class文件

我正在开发一个项目,要求我随时生成一个java".class"文件,以后可以在JVM上编译.在学习并使用MSIL(Microsoft IL)(也是基于堆栈的中间编程语言)之后,我面临的问题如下:

  1. 与IL(对于C#或VB)相比,".class"文件中的java字节码以结构化方式包含信息,据我所知,它包含除程序数据之外的元数据,是真的吗? ?我可以为每个类文件在模板表单中生成相同的文件吗?
  2. 是否必须以二进制生成类文件?

我已经提到"由Joshua Engel编写Java™虚拟机程序",但由于我已经了解了JVm指令集,因此它没有达到我的目的.

任何人都可以帮我这个吗?所有帮助将受到高度赞赏.生成简单类文件的示例将非常有用,因为我还无法找到单个1.

java bytecode jvm-languages

5
推荐指数
1
解决办法
523
查看次数

谁是JVM的所有者?

很多移动设备都带有JVM及其操作系统(例如诺基亚,索尼ericcson).所有设备都有相同的JVM吗?Sun微系统拥有所有JVM吗?有没有设备制造商支付太阳微系统?假设如果我想创建自己的OWN JVM,我必须支付sun微系统并获得SUN(ORACLE)的许可?如果不是这样,太阳会如何获利?

java jvm mobile-phones jvm-languages jvm-arguments

5
推荐指数
2
解决办法
938
查看次数

Scala泛型 - 为什么我不能在泛型类中创建参数化对象?

我正在学习scala.
为什么这段代码不起作用:

class GenClass[T](var d : T) {
  var elems: List[T] = Nil 
  def dosom(x: T) = { 
    var y = new T() 
    y   
  }
}
Run Code Online (Sandbox Code Playgroud)

我得到: 错误:需要类类型,但T
代替var y - new T()

是因为类型从java删除?有没有办法解决这个问题 - 在泛型函数中创建T类型的变量?

jvm scala jvm-languages

5
推荐指数
1
解决办法
2663
查看次数

什么时候在.py文件上运行Jython会生成.class文件?

我刚刚开始使用Jython,有时在.py文件上运行jython会生成.class文件,但这并不总是会发生.

起初我认为触发器是你必须在.py文件中定义一个Python类,但显然即使这样也不会生成.class文件.

触发类文件的机制是什么?

谢谢.

python jython jvm-languages

5
推荐指数
1
解决办法
1028
查看次数

起点将常规Servlet编码转换为我的DSL

Clojure提供了一个很好的Java互操作.但是,我真的想拥有这个:

(servlet IndexServlet
  (service[parmas] ....)
  (do-post[params] ....)
  (do-get [params] ....))

(servlet-filter SecurityFilter
  (do-filter [params] ....))
Run Code Online (Sandbox Code Playgroud)

我猜这就是所谓的DSL,在Lisp世界中,它是通过宏完成的.

我不确定如何/从哪里开始.refiy和extends表单在这里肯定有重要作用,但我不知道它如何适合宏.

怎么开始做这个DSL?
一个片段,提示和技巧真的很感激.

java macros dsl clojure jvm-languages

5
推荐指数
1
解决办法
136
查看次数

JVM 会被扩展来处理泛型吗?

你怎么认为?JVM 会得到对泛型的支持吗?

很可能这不仅需要对 JVM 进行大量更改,还需要对类文件格式进行更改,而且在 VM 上运行的语言将从中受益匪浅。

编辑: Java 语言实际上支持某种泛型作为编译时功能,它向字节码添加了一些强制转换,人们以前必须手动添加。

不改变 JVM 或类文件规范的决定在当时很容易理解,因为他们不想破坏向后兼容性,而且 Java 是当今 JVM 唯一重要的语言。

虽然这个决定可能适用于 Java 语言,但它显着减少了其他语言选择如何在 VM 上实现泛型的自由度。

考虑到 Sun/Oracle 已经宣布让 JVM 成为替代语言更友好的地方,他们真的会做他们承诺的事情还是认为他们认为添加“InvokeDynamic”的低成本就足够了?

java generics jvm jvm-languages .class-file

4
推荐指数
1
解决办法
896
查看次数

使用Scala进行XML解析:相当于JS中的"getElementByTagName(name)"

Scala中的XML解析似乎并不像应该的那样容易和直接.

我需要的是与JavaScript中的document.getElementsByTagName(name)类似的东西,但出于我的目的,我所需要的只是特定标记名的第一个元素.这是我最终得到的:

import scala.xml.{Document, Elem, Node}
import scala.xml.parsing.ConstructingParser
def _getFirstMatchingElementByName(search: String, n: Node): Option[Node] = {
    if (n.label == search) {
        Some(n)
    } else {
        var i = 0
        var result: Option[Node] = None
        try {
            while (result == None) {
                result = _getFirstMatchingElementByName(search, n.child(i))
                i += 1
            }
        } catch {
            case e: IndexOutOfBoundsException => None
        }
        result
    }
}
Run Code Online (Sandbox Code Playgroud)

它基本上都会一直进行,直到找到匹配或所有可能性都用完为止.

既然已经发布了我具备此功能所需的功能,我已经对此进行了更多评论,这真的让我感到困惑.我确信有许多Java库可用于帮助解析XML,但考虑到Scala用于生成XML的原生支持(即它几乎可以在任何地方进行内联),我很好奇我是否遗漏了某些内容.

在Scala中有更好的方法吗?

xml xpath scala jvm-languages xml-parsing

4
推荐指数
1
解决办法
914
查看次数

什么发生了groovy ++?

我偶然发现了常规的++并发现它非常有趣.

不幸的是,它似乎没有进一步发展?

  • 根据github的说法,最后一次提交是在一年多前.
  • 邮件列表完全不活动,最后一条消息在四月回来.
  • 最近没有关于它的消息.

该项目是否已移动并且现在有另一个名称?由于改进了groovy,它是否已经过时了?还是刚刚停产?

感谢您的任何见解!

groovy programming-languages jvm-languages groovy++

4
推荐指数
1
解决办法
1006
查看次数

JVM 语言中如何编译嵌套函数和词法作用域?

作为我的问题的一个具体示例,这是 Python 中的一个片段(它应该对最广泛的人可读,并且无论如何都有一个 JVM 实现):

def memo(f):
  cache = {}
  def g(*args):
    if args not in cache:
      cache[args] = f(*args)
    return cache[args]
  return g
Run Code Online (Sandbox Code Playgroud)

工业级语言如何编译这样的定义,以实现静态作用域?如果我们只有嵌套定义但没有更高阶的函数值参数或返回值,像 Pascal 那样(因此不需要闭包)怎么办?我猜计算静态链接已经过时了,因为您无法访问方法调用的堆栈帧。那么一般是怎么做的呢?他们构建匿名内部类吗?Lambda 提升?还有什么?

对不起,如果这是以前被问过的问题;似乎必须如此,但我还没有发现任何正确的地方。

scala clojure jvm-languages kotlin

4
推荐指数
1
解决办法
249
查看次数

Coldfusion CFC可以从Java实例化吗?

我知道可以从ColdFusion实例化一个Java类,但是可以从Java代码实例化ColdFusion CFC吗?

例如(在Java中):

ColdFusionCFC obj = new ColdFusionCFC("filename.cfc");
Run Code Online (Sandbox Code Playgroud)

我想知道是否有可能逐渐从现有的ColdFusion代码库转换到其他基于JVM的语言,而无需立即重写所有内容.

coldfusion jvm-languages

3
推荐指数
1
解决办法
363
查看次数