代码之家  ›  专栏  ›  技术社区  ›  Brian Knoblauch

如何在单个NetBeans项目中混合基于JVM的语言?

  •  8
  • Brian Knoblauch  · 技术社区  · 15 年前

    例如,Scala、Java和Culjure源是否可以在同一个项目中正确地编译/构建?或者,我是否必须将它们作为单独的项目库,然后由我选择的“主”项目使用?

    如果这两者都不是,其他人怎么办?

    2 回复  |  直到 15 年前
        1
  •  6
  •   Jörg W Mittag    15 年前

    不幸的是,Java 社区 似乎对polyglot编程很感兴趣,但IDE供应商并没有跟上脚步。他们一般 有Java、斯卡拉、Crojule、Groovy、Ruby、ECMAScript、Python、C++项目的插件,但是 混合 中的多种语言 通常不支持项目。

    例如,在Ruby中,通过JRuby将Swing用作GUI是很常见的。但是如果您想使用马蒂斯,NETBeaSwing GUI Builder必须使用Java项目,则不能在Ruby项目中使用马蒂斯。但是,如果使用Java项目,则不能拥有Ruby主可执行文件,必须拥有Java主可执行文件。而且,您不会得到Rake支持和Ruby项目类型支持的其他东西。(丑陋的解决方法是编写一个Java主可执行文件,它创建一个 JRubyEngine 手动加载实例 红宝石 主可执行文件并运行它。)

    EclipseScala插件支持有限数量的多国主义,但是它们必须要跨越的箍环是巨大的。基本上,他们使用运行时字节码补丁来将Scala方面注入Java开发工具Eclipse插件中,以获得类型驱动的跨语言重构工作。groovy插件做了类似的事情,AspectJ也做了类似的事情(事实上,他们最初提出了使用AspectWeaving向JDT注入新功能的想法)。因此,所有这些插件允许用自己和Java进行多语言编程。但不幸的是,彼此之间没有。(尽管一些维护人员对更紧密的合作表示了兴趣。)

    一般来说,我担心唯一的解决方案是新的IDE。

        2
  •  3
  •   Carl Smotricz    15 年前

    回答这个问题相当晚,但答案是,intellij思想在polyglot编程方面做得非常好。我最近观看了一个演示,其中一个开发人员用5(!)编写了一个混合语言应用程序。语言。

    他们设法进行多语言感知的语法着色、重构等等。他们显然已经为此付出了一些努力,并且有理由感到骄傲。

    我很高兴地注意到这个想法现在(部分)是开源的。