Java基础(一)——JVM、JRE、JDK、Javac等

来源:互联网 发布:刚买的域名被墙 编辑:程序博客网 时间:2024/05/24 03:20
Life is like a box of chocolates,you never konw what you're going to get.

在大学的时候已经学习过java,但是对java了解的越多越发现自己越来越不了解java。这有点像自以为拥有了整个天空的井底之蛙,跳出了水井,才发现自己乃沧海之一粟。可谓,学然后知不足。再者,温故知新。鉴于以上两个原因,我决定再次学习java语言。

一、JVM(Java Virtual Machine)

大家都知道Java有一个特性:“write once,run everywhere.”就是一次编译,到处运行。这充分地体现了java语言有良好的跨平台特性,怎样理解这个特性呢?
程序从开发到运行一共要经过三个阶段:第一个阶段是编写阶段,即编写源代码。例如,我们编写的以.java结尾的源文件。第二个阶段是编译阶段,编译阶段把程序语言翻译成目标语言(二进制代码——计算机可以直接执行),也就是把源文件翻译成可执行文件,对应java中的.class文件。这里的“翻译官”就是编译器了,不同语言的“翻译官”是不同的。第三个阶段是运行、调试阶段了,运行、调试是在一个特定的平台上的,比如Windows、Doc、Linux等等。前面提到的编译器的作用就是沟通源程序和程序的运行平台。所以平台不同,翻译出来的结果就不同。结果不同就出现了兼容性等各种问题。这个过程如下图:
这里写图片描述

二、JRE

在理解跨平台和JVM之前,我们先来了解一下JRE(Java Runtime Environment)。JRE是SUN公司的产品,包括两部分:Java Runtime Environment和Java Plug-in。JavaRuntimeEnvironment(JRE)是可以在其上运行、测试和传输应用程序的Java平台。它包括Java虚拟机(jvm)、Java核心类库和支持文件。它不包含开发工具(JDK)–编译器、调试器和其它工具。JRE需要辅助软件–Java Plug-in–以便在浏览器中运行applet。
J2RE是Java2 Runtime Environment,即Java运行环境,只是强调其匹配Java2平台,有时简称JRE。如果你只需要运行Java程序或Applet,下载并安装它即可。如果你要自行开发 Java软件,请下载JDK(JRE和JDK的区别)。
这里写图片描述

三、JDK

1. JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。

  • SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE。
  • EE(J2EE),enterprise edition,企业版,使用这种JDK开发J2EE应用程序,从JDK 5.0开始,改名为Java EE。
  • ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的java应用程序,从JDK 5.0开始,改名为Java ME。
    -没有JDK的话,无法编译Java程序,如果想只运行Java程序,要确保已安装相应的JRE。

2. JDK包含的基本组件包括:

  • javac – 编译器,将源程序转成字节码
  • jar – 打包工具,将相关的类文件打包成一个文件
  • javadoc – 文档生成器,从源码注释中提取文档
  • jdb – debugger,查错工具
  • java – 运行编译后的java程序(.class后缀的)
  • appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
  • Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
  • Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
  • Jconsole: Java进行系统调试和监控的工具。

其中JDK中包含了JRE和编辑器(javac)。所以写过Java程序的朋友们,只需要安装JDK即可,不需要安装JRE,就是这个原因了。

具备了以上只是我们就很好理解java程序的跨平台特性了,java源文件(.java文件)经过java编译器(javac)被编译成字节码(.class文件),这些直接是在JVM上运行的,所以只要平台上安装了J2RE,就可以运行Java程序。这里JVM实际上是java运行平台,但是这个平台可以按照到其它平台上,所以相当于其它平台也可以运行Java程序。这样就达到了“write once,run everywhere”的效果。关于JVM,我们暂时理解成一个平台就可以了。不过对于一个好的java程序员,JVM的运行原理,我们也必须是知道的。

下面这张图涵盖了上面说有的知识:
这里写图片描述

1 0
原创粉丝点击