java跨平台,javac,jvm.dll

[size=large]Java虽然是platform independent,但是JVM却不是。对于不同的操作系统和不同的CPU架构,有不同的JVM与之对应。JVM就是这样屏蔽底层硬件差异,使得Java program可以在任何平台上无差别的运行。

java先由javac编译为.class文件,然后在由JVM将.class文件执行为相应操作系统可执行的代码(汇编代码)。javac在JDK的bin目录中,JVM在JRE的bin目录下,所以JRE只是运行时环境。

Jre 是java runtime environment, 是java程序的运行环境。既然是运行,当然要包含jvm,也就是大家熟悉的虚拟机啦, 还有所有java类库的class文件,都在lib目录下打包成了jar。大家可以自己验证。至于在windows上的虚拟机是哪个文件呢? 学过MFC的都知道什么是dll文件吧,那么大家看看jre/bin/client里面是不是有一个jvm.dll呢?那就是虚拟机。

Jdk 是java development kit,是java的开发工具包,里面包含了各种类库和工具。当然也包括了另外一个Jre. 那么为什么要包括另外一个Jre呢?而且jdk/jre/bin同时有client和server两个文件夹下都包含一个jvm.dll。 说明是有两个虚拟机的。这一点不知道大家是否注意到了呢?

相信大家都知道jdk的bin下有各种java程序需要用到的命令,与jre的bin目录最明显的区别就是jdk下才有javac,这一点很好理解,因为 jre只是一个运行环境而已。与开发无关,正因为如此,具备开发功能的jdk自己的jre下才会同时有client性质的jvm和server性质的 jvm, 而仅仅作为运行环境的jre下只需要client性质的jvm.dll就够了。

记得在环境变量path中设置jdk/bin路径麽?这应该是大家学习Java的第一步吧, 老师会告诉大家不设置的话javac和java是用不了的。确实jdk/bin目录下包含了所有的命令。可是有没有人想过我们用的java命令并不是 jdk/bin目录下的而是jre/bin目录下的呢?不信可以做一个实验,大家可以把jdk/bin目录下的java.exe剪切到别的地方再运行 java程序,发现了什么?一切OK!
[/size][size=x-large][/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: java.exe和javac.exe是Java开发工具中的两个不同的程序。 java.exe是Java虚拟机(JVM)的执行程序,它负责解释和执行Java程序的字节码。当我们在命令行中输入"java xxx"时,就是在调用java.exe来执行xxx.class文件。 而javac.exe是Java编译器的执行程序,它负责将Java源代码编译成字节码文件(.class文件)。当我们在命令行中输入"javac xxx.java"时,就是在调用javac.exe来将xxx.java文件编译成xxx.class文件。 因此,java.exe和javac.exe的主要区别在于它们的功能不同,一个是执行Java程序,一个是编译Java程序。 ### 回答2: Java跨平台的高级编程语言,它可以让开发人员创建各种类型的应用程序,从简单的命令行工具到复杂的企业级Web应用程序。 Java的代码是由Java编译器编译成Java字节码,这些字节码由Java虚拟机(JVM)解释执行。Java编译器由两个主要组件组成,即java.exe和javac.exe。 Java.exe Java.exe是Java虚拟机(JVM)的一部分。它是运行Java字节码的主要组件。当Java程序被编译并生成字节码文件后,它们必须由java.exe在JVM上运行。 Java.exe可以通过命令行启动,也可以在Web浏览器中作为Java插件运行。在命令行中,可以使用以下命令启动Java虚拟机: java [options] classname [args] 其中,[options]是可选项,用于指定Java虚拟机的运行参数。classname是要运行的Java类的名称。[args]是传递给Java类的参数列表。 Javac.exe Javac.exe是Java编译器的一部分。它用于将Java源代码编译成Java字节码。Javac.exe从.java源代码文件中读取代码,然后将其编译成Java字节码。这些字节码可以由java.exe在JVM上执行。 在命令行中,可以使用以下命令来编译Java源代码: javac [options] filename.java 其中,[options]是可选项,用于指定编译器的选项和参数。filename.java是要编译的Java源代码文件的名称。 总结: Java.exe和Javac.exe都是Java的重要组件。Java.exe是Java虚拟机的一部分,它负责在JVM上运行Java字节码。而Javac.exe是Java编译器的一部分,用于将Java源代码编译成Java字节码。Java程序必须首先使用Javac.exe将Java源代码编译成字节码,然后再使用Java.exe在JVM上运行它们。 ### 回答3: java.exe和javac.exe是Java语言中两个非常重要的执行程序,它们的主要区别体现在针对不同的Java源文件进行编译和执行。 首先,java.exe是Java的运行程序,可以说是Java虚拟机(JVM)的启动器。当开发者编写一个复杂的Java程序之后,需要把这个程序编译成一个字节码文件,格式为“.class”文件。然后,通过利用java.exe启动JVM,让字节码文件能够被JVM识别并完成程序的执行。也就是说,java.exe主要负责加载和执行已编译的Java程序。 而javac.exe则是Java开发者使用的编译器,它可以将源代码编译成为字节码文件,生成后缀为“.class”的可执行文件。也就是说,开发者编写的Java源代码,在使用了javac编译器之后,可以被转化为可在Java虚拟机上执行的格式化指令。因此,javac主要负责编译Java程序源代码,生成可以被java.exe启动的字节码文件。 另外,需要说明的是,java.exe和javac.exe属于Java Development Kit(JDK)中的组件,是Java开发的必要组成部分。从本质上来说,它们是Java开发中不可或缺的两个程序执行器,能够实现程序的编译和运行。 总而言之,java.exe和javac.exe虽然在名字上非常相似,但是它们的功能和作用却存在很大的区别。java.exe是Java运行时的启动程序,用于加载和执行已编译的Java程序;而javac.exe是Java开发者主要使用的编译器,用于将Java源代码编译成可以在Java虚拟机上执行的字节码文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值