• 《深入java虚拟机》随笔(随时更新)


    1.不同系统在java平台上运行的java程序(这张图不错)     2.java虚拟机的主要任务就是用类装载器(class loader)从程序和API中装载class文件,        3.java中有两种方法:java方法和本地方法(native method)                                                                                                             并且执行其中的字节码。(类的加载:把class文件读入内存, 并创建一个Class对象)        前者是java语言编写的,与平台无关。后者用c/c++/汇编 编写的,与平台有关

      

    4.通过本地方法,java程序可以直接访问底层操作系统的资源。但是这样用,程序会变成平台相关的,因为包含本地方法的动态库是平台相关了。如果希望保证程序的平台无关性,那么只能通过java API 来访问系统资源

    5.运行java程序时,虚拟机装载程序的class文件所使用的java api class文件(任何能运行程序的java虚拟机上都能够获得java api class文件,因为java虚拟机和java api class文件是任何java平台都要实现的必要部分)。所有被加载的class文件(包括从应用程序中和从java api中提取的)和所有已经装载的动态库(包含本地方法)共同组成了在java虚拟机上运行的整个程序。

    6.Java API的class文件天生就主机平台密切相关。在一个平台能够支持java程序以前,必须在这个特定平台上明确地实现API的功能。为访问主机上的本地资源,Java API调用了本地方法。出于API class文件调用了本地方法,Java程序就不再需要调用它们了。通过这种方法,Java API class文件为底层主机提供了具有平台无关性的、标准接口的Java程序。对Java程序而言,无论平台内部如何,Java API都会有同样的表现和可预测的行为。正是由于在每个特定的主机平台上都明确地实现了Java虚拟机和Java API,因此,Java程序自身就能够成为具有平台无关性的程序。(但是一些图形界面库因为不同系统风格不同,所以有例外) 

  • 相关阅读:
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    C 语言编程 — 使用 assert 断言进行程序设计
    C 语言编程 — uint8_t / uint16_t / uint32_t /uint64_t
    五月数据库技术通讯丨Oracle 12c因新特性引发异常Library Cache Lock等待
    4场直播丨站撸Oracle、MySQL、医疗、航空
    asyncio
    python 多线程 多进程
    一文详解被阿里腾讯视作核心机密的大数据平台架构
  • 原文地址:https://www.cnblogs.com/baron89/p/2831019.html
Copyright © 2020-2023  润新知