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平台之间,另一个主要的变化就是用户接口。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 分享一份软件测试项目实战(web+app+h5+小程序)

    分享一份软件测试项目实战(web+app+h5+小程序)大家好,我是谭叔。本次,谭叔再度出马,给大家找了一个非常适合练手的软件测试项目,此项目涵盖web端、app端、h5端、小程序端,可以说非常之全面。缘起在这之前,谭叔已经推出了九套实战教程。但是,这些教程以web测试和接口测试为主,没有app等项目。为了让实战项目更加全面、涵盖到各端,同时也为了满足读者粉丝们对项目的高需求,我决定再给大家找一个项目。(实力宠粉,求个赞不过分吧~)说实话,在找项目的过程中,我下载过(甚至付费下载过)N多个项目、联系过很多项目的作者,但是绝大部分项目,在我看来,并不

  • PHP IDE phpstorm 常用快捷键

    PHP IDE phpstorm 常用快捷键

  • 几款连接redis的客户端(GUI客户端),下面记录了我使用的几款

    几款连接redis的客户端(GUI客户端),下面记录了我使用的几款几款连接redis的客户端(GUI客户端),下面记录了我使用的几款一、Redis客户端1、命令行工具命令行(建议使用,简单)比如windows的cmd和Linux、Mac的Terminal,虽然最简单好用。必须保证有redis-cli命令(windows是redis-cli.exe),比如通过安装redis就会有这个命令。2、桌面客户端RediNav(windows桌面客户端,MacOS客户端,根本不能用)评价:垃圾,完全不能用,无论win还是mac平台!我写在

  • 一个简单的实用的log4j.properties

    一个简单的实用的log4j.properties

  • GSLB算法

    GSLB算法1)基于流量的负载均衡算法:主要采用负反馈的原理来控制各个POP节点上的流量,负反馈是一种基于偏差的调度算法.2)同时基于往返时间和流量的负载均衡算法:要考虑的负载均衡策略有两个:一个是用户访问POP节点的往返时间,另一个是流量负载,这两个均衡策略同时使用来保证GSLB将用户访问调度到合适节点…

  • clion激活码7月【2022.01最新】

    (clion激活码7月)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html40…

发表回复

您的电子邮箱地址不会被公开。

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