标签: jvm-languages

使用Groovy/JRuby/Jython或其他JVM语言的UI设计备选方案?

对于Java生态系统中的开发人员,在UI设计方面有一些选择.最着名的是:

  • Swing(与Netbeans及其GUI构建器一起使用时首选)
  • Eclipse的SWT(主要用于Eclipse插件)

现在,有没有针对JRuby/Groovy/Jython或其他"动态"JVM语言的框架或设计替代方案?

一些UI框架是Swing或SWT上的层,例如,框架可以读取XML中的屏幕描述并实例化相应的Swing组件.

如果你知道这样的框架,但是它以JVM"动态"语言为目标,我也希望在答案中看到它们.

java groovy user-interface jruby jvm-languages

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

学习Clojure来自Lisp

我正在认真考虑让Clojure成为我新的黑客语言,因为我喜欢Lisp但是在CL和Scheme方面存在一些问题.我以前从未在Java环境中工作,我的lisp经验仅限于通过"SICP"和"The Little Schemer"工作.

我需要知道什么?"Clojure方式"有什么好的资源吗?Clojure风格的任何资源?我找到了Mark Volkmann的精彩页面,但我看过的书看起来有点空.

另外,我需要了解Java的哪些方面?我不想学习Java只是为了学习Clojure,但我想我至少应该知道一点.另外,工作流程是什么样的?我的经验仅限于动态语言,所以我不知道在JVM上分发没有源代码的应用程序需要做些什么.

我已经用Google搜索了这一点,但是有大量的信息,并没有太多"特定于clojure"的东西.

我想我正在寻找一些关于我应该以某种逻辑顺序阅读的文献的明智建议.

jvm clojure jvm-languages

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

基于堆栈的机器取决于基于寄存器的机器?

普通CPU(例如,Android设备)是基于寄存器的计算机.Java虚拟机是基于堆栈的机器.但是基于堆栈的机器是否依赖于基于寄存器的机器才能工作?不能基于堆栈的机器运行孤独,因为它不是操作系统?除了JVM之外,还有基于堆栈的机器示例吗?有些人说1个操作数,2个操作数; 你为什么需要这个?

java android jvm jvm-languages

3
推荐指数
2
解决办法
1159
查看次数

如何在命名空间的上下文中评估clojure数据结构?

我正在编写一个内部使用的clojure应用程序,我希望配置文件也在clojure中.我已经定义了一些宏来使编写配置文件更容易,但是当我尝试从配置文件中评估数据时,它无法找到我的宏.然而,这在REPL中工作正常.例如,我正在使用

(load-string "/path/to/config")
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Exception in thread "main" java.lang.RuntimeException: Unable to resolve symbol: defcmd in this context, compiling:(null:1)
at clojure.lang.Compiler.analyze(Compiler.java:6235)
at clojure.lang.Compiler.analyze(Compiler.java:6177)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3452)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6411)
at clojure.lang.Compiler.analyze(Compiler.java:6216)
at clojure.lang.Compiler.analyze(Compiler.java:6177)
at clojure.lang.Compiler.eval(Compiler.java:6469)
at clojure.lang.Compiler.load(Compiler.java:6902)
at clojure.lang.Compiler.load(Compiler.java:6872)
at clojure.core$load_reader.invoke(core.clj:3625)
at clojure.core$load_string.invoke(core.clj:3635)
at serverStats.core$load_config.invoke(core.clj:67)
at serverStats.core$_main.doInvoke(core.clj:78)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at clojure.lang.Var.invoke(Var.java:397)
at user$eval109.invoke(NO_SOURCE_FILE:1)
at clojure.lang.Compiler.eval(Compiler.java:6465)
at clojure.lang.Compiler.eval(Compiler.java:6455)
at clojure.lang.Compiler.eval(Compiler.java:6431)
at clojure.core$eval.invoke(core.clj:2795)
at clojure.main$eval_opt.invoke(main.clj:296)
at clojure.main$initialize.invoke(main.clj:315)
at clojure.main$null_opt.invoke(main.clj:348)
at clojure.main$main.doInvoke(main.clj:426)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:405)
at clojure.lang.AFn.applyToHelper(AFn.java:163)
at clojure.lang.Var.applyTo(Var.java:518)
at clojure.main.main(main.java:37)
Caused by: java.lang.RuntimeException: Unable …
Run Code Online (Sandbox Code Playgroud)

lisp clojure jvm-languages clojure-contrib

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

为什么scala编译器说这种类型用于非特殊化的位置?

我在package对象中有这个方法:

def extractLoop[@specialized T](x: Map[T, T]) = {
    val whatever = x.head
    val stop = whatever._1
    def iteration(
            acc: Seq[T] = Seq(whatever._1, whatever._2),
            last: T = whatever._2): Seq[T] = {
        val next = x(last)
        if (next == stop) acc
        else iteration(acc :+ next, next)
    }
    iteration()
}
Run Code Online (Sandbox Code Playgroud)

但我还不明白,为什么编译器(我有版本2.9.2)说type T is unused or used in non-specializable positions.

compiler-construction generics scala jvm-languages compiler-warnings

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

JVM缺少对NaN vs scala Double.NaN的支持

我最近在Java虚拟机规范中读到JVM不支持NaN值,也不支持信号溢出的方法.

我特别指的是jvms 7的第2.8.1节,JVM支持的浮点运算和IEEE 754之间的主要区别,这一点指出:

"The floating-point operations of the Java Virtual Machine do not throw
exceptions, trap, or otherwise signal the IEEE 754 exceptional conditions of
invalid operation, division by zero, overflow, underflow, or inexact. The Java
Virtual Machine has no signaling NaN value."
Run Code Online (Sandbox Code Playgroud)

我错过了解这个吗?在Scala(它依赖于字节码中的Java原语来表示数字类型),以及Java的Double对象中,有一个NaN和一个正/负无穷大值(在Java中记录了相应的二进制值).如果JVM不支持它们,如何有效地处理这些问题?

java floating-point jvm scala jvm-languages

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

Scala/Clojure使用什么汇编程序?

我一直在研究编译器(在JVM上运行).我成功地找到了两个针对它的汇编程序.

然而,我发现的两个,一个是Jasmin,维护得不是很好(2010年的最新更新).另一方面,Krakatau,有点记录不清.

我可以帮助注意到有很多成熟的JVM语言.而我只是想知道,他们使用的汇编程序是什么?或者他们只是充分利用原始字节码?据我所知,除了简单的字节码指令外,还有很多其他功能.使用汇编程序也会容易得多.

他们是否有成熟(维护良好且记录良好)的JVM组装商?或者我只是从头开始学习JVM基础知识?

jvm scala clojure jvm-languages

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

是否可以“愚弄” java从命令行设置环境变量

我在可以传递参数但不能使用普通命令行设置环境变量的环境中运行。

我还是要设置环境变量。是否有另一种方法可以“愚弄” java设置环境变量,例如使用-D参数?

(我正在通过色调在oozie中运行火花;所有这些都在Cloudera堆栈中)。

java jvm-languages jvm-arguments

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

为Clojure项目设置CLASSPATH

我有一个简单的项目结构:

Base Dir
   src ;; Pile of Clojure files
   lib ;; Jar files
Run Code Online (Sandbox Code Playgroud)

要导出类路径:$ export CLASSPATH = $ CLASSPATH:src:lib/*

试图运行一个Clojure文件:java -cp $ CLASSPATH -jar lib/clojure.jar src/wizard-game.clj
但是我得到了:

线程"main"中的异常java.io.FileNotFoundException:找不到类路径上的
clojure/contrib/trace_init.class 或clojure/contrib/trace.clj: 引起:java.io.FileNotFoundException:找不到clojure/contrib / classpath上的trace _init.class或clojure/contrib/trace.clj:

好吧,这是一个类路径问题,但是我做错了什么/哪里?

有没有更好的方法来尝试运行它?

更新:
我试过这个命令:

java -classpath $ CLASSPATH clojure.main src/wizard-game.clj

现在运行正常.

jvm clojure jvm-languages classpath

2
推荐指数
1
解决办法
3212
查看次数

java虚方法:功能还是bug?

拿这个基类:

public abstract class XMPPSubservice
{

    protected XMPPService mTheService;


    protected XMPPSubservice(Context context) 
    {
        Intent intent = new Intent(context, XMPPService.class);
        context.startService(intent);
    }


    public void onServiceInstance(XMPPService service) {
        // TODO Auto-generated method stub
        mTheService = service;
    }

}
Run Code Online (Sandbox Code Playgroud)

而这个派生类:

public class PublicDataSubservice extends XMPPSubservice 
{

    private final SomeObject mObj = new SomeObject();

    public PublicDataSubservice(Context context) {
        super(context);
    }

    @Override
    public void onServiceInstance(XMPPService service) 
    {
        super.onServiceInstance(service);
            mObj.doSomethingWith(mTheService);
    }

}
Run Code Online (Sandbox Code Playgroud)

目标是只调用mObj.doSomethingWith(mTheService); mTheService生效后(发生在基类中).事情是它总是在mObj线上吐出NPE.我能理解为什么会这样,但它对我来说看起来很不可思议.那么这是DVM的一个bug还是一个功能?JVM怎么样?

java jvm-languages dalvik

2
推荐指数
1
解决办法
419
查看次数