java语言的平台无关性是指什么,《深入Java虚拟机》学习笔记二:平台无关性

java语言的平台无关性是指什么,《深入Java虚拟机》学习笔记二:平台无关性第二章平台无关1、Java体系结构对平台无关性的支持对平台无关性的支持,是分布在整个Java体系结构中的,所有的组成部分,包括语言、class文件、API及虚拟机,都在对平台无关性的支持方面扮演着重要角色。Java平台扮演一个运行Java程序与其下的硬件和操作系统间的缓冲角色。Java程序被编译为可运行于Java虚拟机的二进制程序,并且假定JavaAPI的class文件在运行时都是可用的,接着虚…

大家好,又见面了,我是你们的朋友全栈君。

第二章 平台无关

1、Java体系结构对平台无关性的支持

对平台无关性的支持,是分布在整个Java体系结构中的,所有的组成部分,包括语言、class文件、API及虚拟机,都在对平台无关性的支持方面扮演着重要角色。

Java平台扮演一个运行Java程序与其下的硬件和操作系统间的缓冲角色。Java程序被编译为可运行于Java虚拟机的二进制程序,并且假定JavaAPI的class文件在运行时都是可用的,接着虚拟机运行程序,那些API则给与程序访问底层计算机的能力,无论Java程序被部署到何处,它只需要与Java平台交互, 担心底层的硬件和操作系统,因此它能够运行于任何拥有Java平台的计算机。

Java编程语言主要通过基本数据类型的值域和行为都是由语言自己定义的(在C和c++中,基本整数类型中的int的值域是它的占位宽度来决定,而它的占位宽度则是由目标平台决定,这就意味着针对不同的平台编译的同一个C++程序在运行时可能会有不同的行为,而这仅仅是因为基本数据类型在不同平台上值域的不同)。通过确保基本数据类型在所有平台上的一致性,Java语言本身为Java程序的平台无关性提供了强有力的支持。

Class文件定义了一个特定于Java虚拟机的二进制格式,Java class文件可以在任何平台上创建,也可以被任何平台的Java虚拟机装入并运行。

Java 的可伸缩性:Java支持平台无关性,一个方面就是它的可伸缩性,Java平台可以在各种各样不同平台的计算机上实现。具体表现在有三个基础的API集合(J2EE,J2SE,J2ME).

2、影响平台无关性的因素

Java程序的平台无关性依赖于多种因素,其中有些因素不在开发人员的控制范围之内,但是大多数是由开发人员控制的(从根本上说,任何Java程序的平台无关程度都依赖于作者怎样编写它)。

1) java平台的部署:决定Java程序其平台无关性的最主要因素就是Java平台在不同的平台上被部署的程度。

2) Java平台的版本,Java平台的版本始终在动态变化中。

3) 本地方法:决定Java程序的平台无关程度的另一个主要因素就是是否调用了本地方法。(当编写一个平台独立的Java程序时,必须遵守的一条最重要的原则就是:不要直接或者间接的调用不属于JavaAPI的本地方法。)

3、对虚拟机的依赖

在编写平台独立的Java程序时,必须遵循两条原则:

1)不要依赖及时终结(finalization)来达到程序的正确性。

2)不要依赖线程的优先级(thread prioritization)来达到程序的可正确性。(为了保证多线程Java程序的平台独立,必须依赖同步Sychronization而不是优先级来在线程之间协调相互间的动作。

这两条原则可以防止Java虚拟机规范中允许的垃圾收集和线程在不同实现中的变化所带来的不利影响。

4、对用户界面的依赖

在不同的Java平台之间,另一个主要的变化就是用户接口。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156672.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Eclipse汉化教程——只用于学习用途

    Eclipse汉化教程——只用于学习用途Eclipse2019版本汉化教程首先这里我已经做了汉化了,但是不影响各位学习怎么汉化,首先打开工具栏的帮助按钮,选中倒数第四个按钮,如下图所示(看不懂英文的朋友不要紧,对照图上位置即可),如下图所示:然后会打开这个页面然后打开这个网址(默认是英文的)语言包地址(点击左边这个蓝色的字体)出现下面的页面复制图中标记的地址注意官网这个地址中,如果用谷歌浏览器翻译后:号用的是中…

    2022年5月3日
    46
  • 超好玩的vbs代码 (恶作剧代码)

    超好玩的vbs代码 (恶作剧代码)VBScript是VisualBasicScript的简称微软公司可视化BASIC脚本版),即VisualBasic脚本语言,有时也被缩写为VBS。它是一种微软环境下的轻量级的解释型语言,它使用COM组件、WMI、WSH、ADSI访问系统中的元素,对系统进行管理。同时它又是asp动态网页默认的编程语言,配合asp内建对象和ADO对象,用户很快就能掌握访问数据库的as…

    2022年6月14日
    50
  • 从零开始搭建 web 聊天室(一)

    从零开始搭建 web 聊天室(一)本篇将介绍如何快速、简便地使用socket.io库搭建一个web在线聊天室。前端并没有使用任何框架。后端使用express框架搭建简易的后端。socket.io库本质上是基于websocket上进行封装。改变了以往只能前端发送请求,后端才能返回给前端信息,这样的一问一答形式。实现了前后端双向通信,即后端也可以主动push信息到前端。websocket尤其适用于在线聊天或者实时交互的场景。已经广泛用于直播平台、视频平台等。本篇实现:最基本的前后端信息交互。代码地址:https

    2022年6月22日
    22
  • mysql备份后缀是什么_mysql备份还原

    mysql备份后缀是什么_mysql备份还原一、备份常用操作基本命令1、备份命令mysqldump格式格式:mysqldump-h主机名-P端口-u用户名-p密码–database数据库名>文件名.sql2、备份MySQL数据库为带删除表的格式备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。mysqldump–add-drop-table-uusername-p…

    2022年6月16日
    40
  • JLink的JTag和SWD模式引脚定义[通俗易懂]

    JLink的JTag和SWD模式引脚定义[通俗易懂]1、SWD模式第15脚可接可不接(有问题再接)2、SWD模式第1脚VCC由目标板提供参考电压,若目标板MCU电压与SWD第2脚电压相同,则可以将1脚与2脚短接,实现3线式SWD…

    2022年5月28日
    48
  • scanf格式控制符的完整格式

    scanf格式控制符的完整格式

    2021年9月27日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号