Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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
我们能不能把;javac";及;爪哇语;命令_Java_Command Line_Groovy - Fatal编程技术网

我们能不能把;javac";及;爪哇语;命令

我们能不能把;javac";及;爪哇语;命令,java,command-line,groovy,Java,Command Line,Groovy,Groovy命令行命令“Groovy”似乎将Groovy源文件(.Groovy)编译成.class文件,然后运行它(如果是脚本) 为什么没有编译和运行.java文件的等效命令呢* 为什么我们需要做两个步骤 javac XXX.java java XXX 为什么不 java XXX ? *也许我大错特错了,Groovy是一种动态语言。因此没有编译步骤。它是write->execute。当您使用Groovy开发应用程序时,您提供的是您编写的实际源代码。Java是一种静态语言。当您使用Java开发

Groovy命令行命令“Groovy”似乎将Groovy源文件(.Groovy)编译成.class文件,然后运行它(如果是脚本)

为什么没有编译和运行.java文件的等效命令呢*

为什么我们需要做两个步骤

javac XXX.java
java XXX
为什么不

java XXX
?


*也许我大错特错了,Groovy是一种动态语言。因此没有编译步骤。它是write->execute。当您使用Groovy开发应用程序时,您提供的是您编写的实际源代码。Java是一种静态语言。当您使用Java开发某些东西时,您需要编写->编译->执行。一旦你开发了应用程序,你将得到编译后的代码。这就是为什么有一个单独的命令“javac”,用来编译代码并生成您将要发送给客户的工件。当然,在开发时,直接运行java代码要容易得多。大多数IDE都提供了这一点。e、 g:在eclipse中,您可以运行一个具有main方法的Java类

=================================

编辑:对于被否决的人:-)


我概述了Groovy和Java的不同意图。Groovy是一种动态/脚本语言。因此,像许多其他这样的语言一样,没有“编译”步骤。Java是一种静态语言。因此,存在一个“编译”步骤,您可以在其中执行静态类型检查。

您可以这样做吗?对编写一个运行
javac
java
的脚本很简单

这是个好主意吗?那由你决定。但是我想你会发现运行
javac
然后再运行
java
比只运行
java
要花费更长的时间。因此,除非您通常只运行一次Java程序,否则将这两个步骤分开是有意义的

所以

为什么没有编译和运行.java文件的等效命令呢


对。因为您通常希望编译(构建)并作为单独的步骤运行。。。出于性能原因。

显然,能够在单独的步骤中编译和运行是很好的,但是应该有第三个命令可以在一个步骤中同时执行这两个操作,对吗?只编译一个Java文件是非常罕见的。通常,一个项目有成百上千个类。只需要javac来构建项目也是非常罕见的。通常,开发人员在IDE中工作,IDE为他们构建所有内容。@JBNizet这是工具IMOHO的一个更大的限制。我可以“只运行”Scala代码(尽管通常不会对整个编译单元运行)。在我看来,您应该能够用一个命令运行一个.java文件。@AlexMills,但标准工具不是这样工作的-想要一些东西并不能使它成为这样:),我在非Sun/Oracle Java环境方面的经验很少,因此。。也许在某个地方是可能的。据我所知,这不是真的。groovy文件被编译成标准的.class文件,然后运行,就像Java一样。是的,
groovyc
是为了编译groovy而存在的,它编译成与groovy无关的
.class
文件。是的,它有一个用于动态类生成、修改和加载的编译器API,但自第6版以来Java也是如此。@AlexMills是的,groovy将groovy代码编译成字节码。JVM上运行的任何语言都必须这样做。但是当您运行代码时,它是动态完成的。我只是根据这些语言的意图来区分Groovy/Java。一个是动态的,而另一个是静态的。它也不会在硬盘上生成.class文件。这一切都是在内存中完成的,请编辑:抱歉,Groovy并不是一种动态脚本语言。是的,您可以使用它来实现这一点,但它是JVM上成熟的替代语言,可以在需要时用作脚本语言。正如我已经提到的,现在你可以用纯Java做完全相同的事情,人们似乎只是对代理、编译器和注释处理API进行了粉饰,因为它们不像Groovy(和其他JVM替代品)那么好的预包装。@Esko Groovy网站上说“Groovy。。。是一种用于Java虚拟机的灵活动态语言,所以我猜它应该是一种动态语言。