我正在开发一个项目,要求我随时生成一个java".class"文件,以后可以在JVM上编译.在学习并使用MSIL(Microsoft IL)(也是基于堆栈的中间编程语言)之后,我面临的问题如下:
我已经提到"由Joshua Engel编写Java™虚拟机程序",但由于我已经了解了JVm指令集,因此它没有达到我的目的.
任何人都可以帮我这个吗?所有帮助将受到高度赞赏.生成简单类文件的示例将非常有用,因为我还无法找到单个1.
很多移动设备都带有JVM及其操作系统(例如诺基亚,索尼ericcson).所有设备都有相同的JVM吗?Sun微系统拥有所有JVM吗?有没有设备制造商支付太阳微系统?假设如果我想创建自己的OWN JVM,我必须支付sun微系统并获得SUN(ORACLE)的许可?如果不是这样,太阳会如何获利?
我正在学习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类型的变量?
我刚刚开始使用Jython,有时在.py文件上运行jython会生成.class文件,但这并不总是会发生.
起初我认为触发器是你必须在.py文件中定义一个Python类,但显然即使这样也不会生成.class文件.
触发类文件的机制是什么?
谢谢.
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?
一个片段,提示和技巧真的很感激.
你怎么认为?JVM 会得到对泛型的支持吗?
很可能这不仅需要对 JVM 进行大量更改,还需要对类文件格式进行更改,而且在 VM 上运行的语言将从中受益匪浅。
编辑: Java 语言实际上支持某种泛型作为编译时功能,它向字节码添加了一些强制转换,人们以前必须手动添加。
不改变 JVM 或类文件规范的决定在当时很容易理解,因为他们不想破坏向后兼容性,而且 Java 是当今 JVM 唯一重要的语言。
虽然这个决定可能适用于 Java 语言,但它显着减少了其他语言选择如何在 VM 上实现泛型的自由度。
考虑到 Sun/Oracle 已经宣布让 JVM 成为替代语言更友好的地方,他们真的会做他们承诺的事情还是认为他们认为添加“InvokeDynamic”的低成本就足够了?
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中有更好的方法吗?
我偶然发现了常规的++并发现它非常有趣.
不幸的是,它似乎没有进一步发展?
该项目是否已移动并且现在有另一个名称?由于改进了groovy,它是否已经过时了?还是刚刚停产?
感谢您的任何见解!
作为我的问题的一个具体示例,这是 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 提升?还有什么?
对不起,如果这是以前被问过的问题;似乎必须如此,但我还没有发现任何正确的地方。
我知道可以从ColdFusion实例化一个Java类,但是可以从Java代码实例化ColdFusion CFC吗?
例如(在Java中):
ColdFusionCFC obj = new ColdFusionCFC("filename.cfc");
Run Code Online (Sandbox Code Playgroud)
我想知道是否有可能逐渐从现有的ColdFusion代码库转换到其他基于JVM的语言,而无需立即重写所有内容.
jvm-languages ×10
java ×4
jvm ×3
scala ×3
clojure ×2
.class-file ×1
bytecode ×1
coldfusion ×1
dsl ×1
generics ×1
groovy ×1
groovy++ ×1
jython ×1
kotlin ×1
macros ×1
python ×1
xml ×1
xml-parsing ×1
xpath ×1