• [java基础]java跨平台的基础知识


    1.Javac编译器

    Javac编译器读取Java源代码,并将其编译成字节代码(.class格式),调用Javac的命令行示例如下:

    C:>javac options filename.java

    值得注重的是,和Java解释器不同,Javac编译器期望它正在编译的文件具有扩展名.java。其命令行如下表选项功能

    • -classpath path 此选项用于设定路径,在该路径上Javac寻找需被调用的类。该路径是一个用分号分开的目录列表。
    • -d Directory 此选项指定一个根目录。该目录用来创建反映软件包继续关系的目录数。
    • -g 此选项在代码产生器中打开调试表,以后可凭此调试产生字节代码。
    • -nowarn 此选项禁止编译器产生警告。
    • -o 此选项告诉javac优化由内联的static、final以及privite成员函数所产生的码。
    • -verbose 此选项告知Java显示出有关被编译的源文件和任何被调用类库的信息。

    2.Java虚拟机

       在windows系统下,通过编译器将源代码编译成windows能运行的形式exe。而java是先通过javac将java源代码编译成 .class 格式,然后在不同的平台上,java虚拟机将.class格式的代码转换成对应平台的指令代码。因而,java虚拟机相当于操作系统与java代码之间的中介。

       实际上:java虚拟机用于解释class文件并通知要执行哪些操作。Java主要靠Java虚拟机(JVM)在目标码级实现平台无关性。JVM是一种抽象机器,它附着在具体操作系统之上,本身具有一套虚机器指令,并有自己的栈、寄存器组等。但JVM通常是在软件上而不是在硬件上实现。(目前,SUN系统公司已经设计实现了 Java芯片,主要使用在网络计算机NC上。另外,Java芯片的出现也会使Java更容易嵌入到家用电器中。)

       JVM是Java平台无关的基础,在JVM上,有一个Java解释器用来解释Java编译器编译后的程序。Java编程人员在编写完软件后,通过Java编译器将Java源程序编译为JVM的字节代码。任何一台机器只要配备了Java解释器,就可以运行这个程序,而不管这种字节码是在何种平台上生成的(过程如图1所示)。另外,Java采用的是基于IEEE标准的数据类型。通过JVM保证数据类型的一致性,也确保了Java的平台无关性。
    clip_image002

     

    跨平台

        java跨平台,但是java虚拟机不跨台。

    clip_image002[8]

    3.java的解释器

       java的解释器只是一个基于虚拟机jvm平台的程序。 如果把Java源程序想象成我们的C++源程序,Java源程序编译后生成的字节码就相当于C++源。程序编译后的80x86的机器码(二进制程序文件),JVM虚拟机相当于80x86计算机系统,Java解释器相当于80x86CPU。在 80x86CPU上运行的是机器码,在Java解释器上运行的是Java字节码。

       Java解释器相当于运行Java字节码的“CPU”,但该“CPU”不是通过硬件实现的,而是用软件实现的。Java解释器实际上就是特定的平台下的一个应用程序。只要实现了特定平台下的解释器程序,Java字节码就能通过解释器程序在该平台下运行,这是Java跨平台的根本。当前,并不是在所有的平台下都有相应Java解释器程序,这也是Java并不能在所有的平台下都能运行的原因,它只能在已实现了Java解释器程序的平台下运行。

    Java字节码的两种执行方式

    1、即时编译方式:解释器先将字节码编译成机器码,然后再执行该机器码。

    2、解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码程序的所有操作。

     

    从各处转载java文件
  • 相关阅读:
    git 基本使用
    docker下rabbitMQ高可用集群部署
    成长路上破局思维:工具化时间管理
    图解Elasticsearch的核心概念
    先森林后树木:Elasticsearch各版本升级核心内容必看
    JRebel 破解最简单的使用
    POA理论:不要被你的目标欺骗了你
    读了《跃迁-成为高手的技术》我的工资翻倍了
    微信头像地址失效踩坑记附带方案
    如何做程序员喜欢的测试妹子?
  • 原文地址:https://www.cnblogs.com/ncscherb/p/5360733.html
Copyright © 2020-2023  润新知