zoukankan      html  css  js  c++  java
  • 1.谈谈对Java平台的理解

    1.谈谈你对Java平台的理解

     Java 本身是一种面向对象的语言,最显著的特性有两个方面,一是所谓的“一次编译,到处运行”(Compile once,run anywhere),能够非常容易地获取跨平台能力;另外就是垃圾收集(GC,Garbage Collection),Java 通过垃圾收集器(Garbage Collector)回收分配内存,大部分情况下,程序员不需要自己操心内存的分配和回收。

    “一次编译,到处运行”说的是Java语言跨平台的特性,Java的跨平台特性与Java虚拟机的存在密不可分,可在不同的环境中运行。比如说Windows 平台和 Linux 平台都有相应的JDK,安装好JDK后就有了 Java 语言的运行环境。其实 Java 语言本身与其他的编程语言没有特别大的差异,并不是说 Java 语言可以跨平台而是在不同的平台都有可以让 Java 语言运行的环境而已,所以才有了 Java 一次编译,到处运行这样的效果。

    严格的讲,跨平台的语言不止Java一种,但是Java是较为成熟的一种。“一次编译,到处运行”这种效果跟编译器有关。编程语言的处理需要编译器和解释器。Java虚拟机和DOS类似,相当于一个供程序运行的平台。

    程序从源代码到运行的三个阶段:编码——编译——运行、调试。Java在编译阶段则体现了跨平台的特性。编译过程大概是这样的:首先将Java源代码转化成 .class 字节码文件,这是第一次编译;.class 字节码就是可以到处运行的文件,然后 .class 字节码会被转化成目标机器码,这是由JVM 来执行的,即Java 的第二次编译。

    “到处运行”的关键和前提就是JVM,因为在第二次编译中 JVM 起着关键作用。在可以运行 Java 虚拟机的地方都内含着一个JVM操作系统。从而使 Java 提供了各种不同平台上的虚拟机制,因此实现了“到处运行”的效果。需要强调的一点是,Java并不是编译机制,而是解释机制。Java 字节码的设计充分考虑了JIT 这一即时编译方式,可以将字节码直接转化成高性能的本地机器码,这同样是虚拟机的一个构成部分。

    Java代码编译是由Java源码编译器来完成,流程图如下所示:

    Java字节码的执行是由JVM执行引擎来完成,流程图如下所示:

    (ps: 摘自Java核心技术36讲)                            

  • 相关阅读:
    程序员的困境
    linux中获取系统时间 gettimeofday函数
    Vim 模式及常用命令整理
    使用stringstream进行类型转换与字符串分割
    EasyNet开源项目计划
    用Akka构建一个简易的分布式文件系统
    SolrCloud攻略
    EasyNet.Solr 4.4.0发布及例子
    axis2调用webservice
    Oracle常用函数2查询
  • 原文地址:https://www.cnblogs.com/tangjian07/p/11145401.html
Copyright © 2011-2022 走看看