Java 对解释性语言的优势感到困惑
我对像java这样的解释语言相对于编译语言的优势感到困惑 解释语言(如java)优于编译语言的标准解释是,相同的.class文件可以在不同类型的机器架构上运行。这怎么帮你省下工作 对于每个不同的机器体系结构,您不需要不同的编译器来将相同的.class文件解释为机器语言吗?因此,如果您需要为每个不同的机器体系结构使用不同的编译器来将相同的.class文件解释为机器代码,这将如何节省您的工作 为什么不制作一种编译语言,将.java源文件立即编译成机器语言呢。当然,这需要一个不同的编译器来从java源文件编译到每台机器架构的机器语言,但是这比从.class文件编译到机器语言的每台机器都需要一个不同的编译器有多大的工作量呢 我的意思是,这与编译语言相同——无论是将java源文件编译成机器代码还是将类文件编译成机器代码,每个机器体系结构都需要一个编译器Java 对解释性语言的优势感到困惑,java,interpreter,interpreted-language,Java,Interpreter,Interpreted Language,我对像java这样的解释语言相对于编译语言的优势感到困惑 解释语言(如java)优于编译语言的标准解释是,相同的.class文件可以在不同类型的机器架构上运行。这怎么帮你省下工作 对于每个不同的机器体系结构,您不需要不同的编译器来将相同的.class文件解释为机器语言吗?因此,如果您需要为每个不同的机器体系结构使用不同的编译器来将相同的.class文件解释为机器代码,这将如何节省您的工作 为什么不制作一种编译语言,将.java源文件立即编译成机器语言呢。当然,这需要一个不同的编译器来从java源
谢谢 首先,Java是一种编译语言,也是一种解释语言,因为您必须从.Java编译到.class 为了回答您的问题,Java通过(某种程度上)解释而获得的优势是,您只需要编译每个程序一次,并且它可以在任何计算机上运行,因为Java运行时环境(JRE)可以在不需要(或只需最少)的情况下,提前编译以匹配本地操作系统和体系结构,从而弥合这一差距进一步汇编 然而,在一种不令人费解的语言中,您必须为每个操作系统和要运行它的每个体系结构编译每个程序,这需要比只为每个操作系统和体系结构编译一次JRE和只编译每个程序一次多得多的工作和总编译时间 让一种语言在每次运行时都针对本地体系结构进行编译是不切实际的,因为编译是一个相当密集的过程。Python在每次运行时都会编译(不过,与Java一样,它是为运行时环境而编译的,而不是为本地体系结构编译的),而且它是速度最慢的语言之一
希望这有助于澄清问题。我喜欢SOURD299的答案。我的两分钱:
- 在技术上,您有无数不同的目标体系结构
- 因此,同时为所有目标编译代码并将其打包在一起将产生一个无限大的可执行文件
- 因此,根据虚拟机字节码编译Java是一个更好的解决方案:因为它只有一个目标体系结构
- 虽然开发人员可以为所有新的和旧的体系结构分别添加JVM,但允许所有新的东西(比如Raspberry PI)运行上个世纪编译的java代码