zoukankan      html  css  js  c++  java
  • JAVA的一次编译,到处执行,你知道多少?

    版权声明:本文为博主原创文章。未经博主同意不得转载。

    https://blog.csdn.net/wangyongxia921/article/details/28117155

     

    一、对AVA的迷茫

     

    曾经仅仅是一味的学习VB.NETc#

    如今轮到学习java了。迷惑了?书上说:JAVA是一种跨平台语言,最大的优势就是它实现了,一次编译,到处执行的机制。

    这是什么?跟平台无关?我曾经做的VB.NETc#程序也没有考虑过平台呀?

    学过编译原理的同学也许都知道“语言处理程序”。事实上就是编译器。

    java的“一次编译,到处执行”就跟这个编译器有关。

    在详细说之前。我们先要理清楚几个概念。以及它们之间的关系。

     

    1、编写阶段——程序设计语言

    VB.NETc#java等都是程序设计语言。这个不用多说。

     

    2、编译阶段——程序处理语言 

    程序处理语言包括编译器,解释器。它的作用就是把程序设计语言翻译成目标语言。

    以上两者的关系就是“语言”和“翻译者”的关系。

    在使用语言时。我们仅仅能说,使用这样的语言去书写一段程序。

    编译器则是能够将某种语言的源程序进行翻译,然后生成目标程序。

    不同的设计语言有不同的编译器。

    我们一般会说。某个编译器支持了什么语言。正如一个翻译者仅仅懂翻译英语,法语。可是不会日语,所以翻译不了日语一样,这个编译器仅仅识别能识别得语言并翻译这样的语言。

     

    3、执行。调试阶段——集成开发环境(IDE

    在程序的执行阶段则是在一个特定的平台上,由这个平台来执行编译生成的程序。编译器的作用就是沟通源程序和程序的执行平台。源程序相对于一个执行平台来说是不可识别的,但当编译器将源程序编译成为这个平台所能够识别的目标语言以后。程序就能够在这个平台上执行了。Java虚拟机是一个平台,DOS 和 Windows 也是平台。

     

    看来以上三个概念,就明了了。为什么我们编敲代码的时候,我们甚至能够仅仅用一个简单的记事本就能够搞定,可是要执行的时候。就须要在“vs”或者“vb”等IDE中进行了。

     

    那么我们进入正题,JAVA的特殊在哪?


    二、一次编译,到处执行 

    上面三个概念中已经指出了程序从源码到执行的三个必经阶段:编码——编译——执行。调试。

    全部的高级语言都须要进过这三个阶段。

    本身JAVA语言的最大特点是面向对象,跟今天的主题无关,不做介绍。JAVA的特殊特殊在哪里?——在编译阶段。 


    1一次编译是宏观的一次编译。


    我们来看一下JAVA的编译过程:

       


    分解过程:

    第一步:Java源码——.CLASS文件字节码。是java的第一次编译。生成的这个.class文件就是能够到处执行的文件。


    第二步:Java字节码——到目标机器代码。执行是由JVM执行引擎来完毕,JAVA的第二次编译。


    2、到处执行的隐含条件——这里的“到处”的前提是“装有JVM”。 


    看完编译过程在这里说“到处执行”就毫不费力了。

    由于第二次编译就是在JVM中执行的,也就是在不论什么一个装有“JVM”的操作系统中完毕的。

    JAVA提供了各种不同平台上的虚拟机制。所以能够实现“到处”。

       


    注意:java并非编译机制,而是解释机制。

     


    看过了JAVA的两次编译,不要以为JAVA是编译机制。在java中有第一次编译。还有第二次解释来适应不同平台;依据不同的平台进行解释执行。在JVM中的第二次编译过程中(从字节码向机器码转换过程中)真正採用的是“解释”机制。即翻译一句,执行一句,不产生整个的机器代码程序。翻译过程假设不出现错误,就一直进行到完毕,否则将在错误处停止执行。

    同一个程序。假设是解释执行的。那么它的执行速度通常比编译为可执行的机器代码的执行速度慢一些。

    可是,对Java来说,二者的区别不太大

    下面是查到的解释:Java的字节码经过细致设计。非常easy便能使用JIT 即时编译方式 编译技术将字节码直接转化成高性能的本地机器码。Sun 公司在 Java 2发行版中提供了这样一个字节码编译器——JIT(Just InTime)。它是Java虚拟机的一部分。Java执行系统在提供JIT的同一时候仍具有平台独立性。因而“高效且跨平台”对Java来说不再矛盾。假设把 Java的程序比做“汉语”的话。字节码就相当于“世界语”,世界语不和详细的“国家”关。仅仅要这个“国家”提供了“翻译”,就能够再高速地把世界语翻译成本地语言。

     


    三、总结


    1JAVA有这么的强大的特点,不是仅仅指的是“狭义”的JAVA程序设计语言,而是整个JAVA体制,从编译器開始发生改革。所以平时我们所说的JAVA特点是一种广义上的JAVA

    開始,迷惑的我。是不清楚这些IDE。这些编译器,这些开发环境(jdk,执行环境(jre)都被融合在一起,放在了一个继承环境中(IDE)。

    这本是一个非常好的开发,执行,调试的一条龙服务,可是缺让我想当然的把程序设计语言,编译器,等这些单独的工具给模糊了。仅仅是一味的再使用,却不知道。这些东西的底层确实这般联系。


    2、这篇文章中的编译知识,能够更好的理解,也是得益于软考中学习的“编译原理”。不得不说,知识环环相扣。

    博客推荐:http://blog.csdn.net/cutesource/article/details/5904542

    
查看全文
  • 相关阅读:
    MyEclipse中无法将SVN检出来的项目部署到tomcat中
    Hibernate n+1问题
    Dubbox框架和Zookeeper 依赖的引入
    SpringSecurity安全框架
    order
    旅游网数据库
    教学所用
    权限系统设计五张表
    springMVC上传文件
    web 开发流程
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10471340.html
  • Copyright © 2011-2022 走看看