Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 游戏框架是如何运作的?_Java_Playframework - Fatal编程技术网

Java 游戏框架是如何运作的?

Java 游戏框架是如何运作的?,java,playframework,Java,Playframework,我喜欢玩!。与其他企业Java框架相比,它的使用非常简单。 但是,它是如何做到这一点的呢?是什么让编辑-刷新周期在Java这样的编译语言中成为可能?什么使游戏!按其工作方式工作?Play使用Eclipse编译器在运行时编译代码 看看下面的类,Play使用它在运行时执行必要的编译 这是运行时编译/类加载器和javassist的神奇魔力 但不要忘记,在prod环境中,它不像Groovy那样在运行时将脚本重新编译成Java类(除非您自然地预编译脚本)。在prod中,玩!使用真实的编译类运行,因此它与经

我喜欢玩!。与其他企业Java框架相比,它的使用非常简单。
但是,它是如何做到这一点的呢?是什么让编辑-刷新周期在Java这样的编译语言中成为可能?什么使游戏!按其工作方式工作?

Play使用Eclipse编译器在运行时编译代码

看看下面的类,Play使用它在运行时执行必要的编译


这是运行时编译/类加载器和javassist的神奇魔力

但不要忘记,在prod环境中,它不像Groovy那样在运行时将脚本重新编译成Java类(除非您自然地预编译脚本)。在prod中,玩!使用真实的编译类运行,因此它与经典java代码一样高效。此外,它不像Spring或其他框架那样使用大量AOP,在函数调用和实际业务代码之间有大量开销

在我看来,这是一个非常聪明的设计;)

我比较了Play(+Scala)和Lift+mvn Scala:cc+JRebel。玩是更好的体验。现在,我知道了原因:

游戏是无状态的。因此,它可以卸载控制器,忘记所有字段,然后再次加载并初始化它。JRebel的目标是更加通用。它假定状态是重要的,因此有时(经常)会失败,因为在某些情况下它无法保持状态