一、完成一个Java程序的流程:编辑Java源代码→编译Java程序→运行Java程序

1. 在记事本中编写Java程序,然后保存为.java类型文件(Java源文件)

2. 使用javac命令将源文件编译成字节码文件(*.class文件)

3. 使用java命令解释执行字节码文件

【示例】

1. 在路径D:\下创建一个HelloWorld.java文件,并编写如下代码

public class HelloWorld
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}

2. 在命令行窗口先切换到路径D:\,然后输入“javac [-d .] HelloWorld.java”命令

补:javac命令的用法为“javac -d destdir srcFile”,其中“-d destdir”指定编译生成的字节码文件的存放路径,而srcFile则是Java源文件所在的位置。

3. 在命令行窗口进入HelloWorld.class所在的位置,然后输入“java HelloWorld”命令

补:java命令的用法为“java Java类名”,java命令后的参数是Java类名,而不是字节码文件的文件名,也不是Java源文件名。

二、Java程序的运行原理

Java源程序经过编译并不会生成特定平台的机器码,而是生成一种与平台无关的字节码(即*.class文件)。这种字节码不是可执行的,必须使用Java解释器来解释执行。

Java语言里负责解释执行字节码文件的是Java虚拟机(即JVM),JVM是可运行Java字节码文件的虚拟计算机。

补1:当使用Java编译器编译Java程序时,生成的是与平台无关的字节码,这些字节码不面向任何具体平台,只面向JVM。不同平台上的JVM都是不同的,但它们都提供了相同的接口。所有平台上的JVM向编译器提供相同的编程接口,而编译器只需要面向虚拟机,生成虚拟机能理解的代码,然后由虚拟机来解释执行。在一些虚拟机的实现中,还会将虚拟机的代码转换成特定系统的机器码执行,从而提高执行效率。

补2:JVM是Java程序跨平台的关键部分,只要为不同平台实现了相应的虚拟机,编译后的Java字节码就可以在该平台上运行。显然,相同的字节码需要在不同的平台上运行,这几乎是“不可能”的,只有通过中间的转换器才可以实现,JVM就是这个转换器。可以认为JVM分为向上和向下两个部分,所有平台上的JVM向上提供给Java字节码程序的接口完全相同,但向下适用不同平台的接口则互不相同。

补3:JVM是一个抽象的计算机,和实际的计算机一样,它具有指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。

2. Java程序的运行机制的更多相关文章

  1. 《疯狂Java讲义》(二)---- Java程序的运行机制和JVM

    1. 运行机制 Java源文件(*.java)-----使用javac编译----编译成*.class文件----使用java解释执行----特定平台的机器码 2. 原理 负责解释执行字节码文件的就是 ...

  2. Java程序的运行机制和JVM

    1. Java语言比较特殊, 由Java编写的程序需要经过编译步骤,但这个编译步骤不会产生特定平台的机器码,而是生成一种与平台无关的字节码(也就是.class文件).这种字节码不是可执行性的,必须使用 ...

  3. 大白话讲解 Java程序的运行机制和JVM

    据我们所知,Java程序是跨平台的.那么Java是如何实现跨平台的呢?看完下面几句话就会恍然大悟! 1.为什么Java语言既是编译型语言又是解释型语言呢? 答:运行Java程序,首先需要经过编译,编译 ...

  4. 《Java疯狂讲义》(第3版)学习笔记 2 - Java语言的运行机制

    内容 1.高级语言的运行机制 2.Java 语言的运行机制 1.高级语言的运行机制 高级语言主要分为编译型语言和解释型语言两类. 编译型语言是指使用专门的编译器.针对特定平台(操作系统)将高级语言源代 ...

  5. JVM学习001通过实例总结Java虚拟机的运行机制

    JVM学习(1)——通过实例总结Java虚拟机的运行机制-转载http://www.cnblogs.com/kubixuesheng/p/5199200.html 文章转载自:http://www.c ...

  6. 一、Java 特性和运行机制

    目录 Java 特性和优势 Java应用程序的运行机制 JVM.JRE和JDK Java 特性和优势 跨平台/可移植性 核心优势.比如:Java的int型永远是32位,C++(16,32). 安全性 ...

  7. 如何利用 JConsole观察分析Java程序的运行,进行排错调优

    原文链接:http://jiajun.iteye.com/blog/810150 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...

  8. 利用jdk自带的运行监控工具JConsole观察分析Java程序的运行

    利用jdk自带的运行监控工具JConsole观察分析Java程序的运行 原文链接 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...

  9. JDK自带的运行监控工具JConsole观察分析Java程序的运行

    原文地址:https://blog.csdn.net/libaolin198706231987/article/details/55057149 一.JConsole是什么 从Java 5开始 引入了 ...

随机推荐

  1. DevOps VS 职责分离

    原文地址: https://medium.com/@jeehad.jebeile/devops-and-segregation-of-duties-9c1a1bea022e 原文作者:Jeehad J ...

  2. Data Management Technology(5) -- Recovery

    Recovery Types of Failures Wrong data entry Prevent by having constraints in the database Fix with d ...

  3. Redis 找出大 key

    系统: CentOS 7.4 64bit yum install python-pip gcc gcc-c++ python-devel git tmux -y pip install rdbtool ...

  4. 向busybox中添加自己的applet

    关键词:buysbox.applet等. busybox常用于嵌入式环境,集成中断Linux命令和工具.这些工具简单高效. 下面从如下方面了解: 这些命令是一个软链接到busybox,那么是如何从软连 ...

  5. 关于一道fork生成子进程的题目

    题目如下: pid_t pid1,pid2; pid1=fork(); pid2=fork(); ||pid2<) { printf("Fork Failed\n"); } ...

  6. java8-12-Optional类

      Optional类  java.util.Optional   是一个容器类 避免空指针  NPE  能够快速定位空指针   常用方法: Optional.of(T t) : 创建一个 Optio ...

  7. Apollo服务端设计原理剖析

    本文摘自于<Spring Cloud微服务 入门 实战与进阶>一书. 1 配置发布后的实时推送设计 配置中心最重要的一个特性就是实时推送了,正因为有这个特性,我们可以依赖配置中心做很多事情 ...

  8. 一道常被人轻视的web前端常见面试题(JS)

    本文转载自站长之家,如有侵权问题,请联系我,马上删除. 面试题是招聘公司和开发者都非常关心的话题,公司希望通过它了解开发者的真实水平和细节处理能力,而开发者希望能够最大程度地展示自己的水平(甚至超常发 ...

  9. python做中学(一)全局变量的用法

    一段时间没有使用python来写代码,就发现以前学习的很多语法都忘了.看来还是当初这方面的项目做的好不够多,没有系统性的运用和学习,导致了很多语法不能顺手拈来.在接下来的这个项目中, 一定要把遇到的一 ...

  10. 融云技术分享:融云安卓端IM产品的网络链路保活技术实践

    本文来自融云技术团队原创分享,原文发布于“ 融云全球互联网通信云”公众号,原题<IM 即时通讯之链路保活>,即时通讯网收录时有部分改动. 1.引言 众所周知,IM 即时通讯是一项对即时性要 ...