Java 平台无关性的基石
Java 在刚刚诞生之初就提出过一个非常著名的口号:“一次编写,到处运行”, 这句话充分表达了软件开发人员对冲破平台界限的渴望
在竞争激烈的 IT 领域,各种不同的硬件体系结构和不同的操作系统肯定会长期并存发展。
“平台无关性” 的理想最终实现在操作系统的应用层上: Sun 公司以及其他虚拟机提供商发布了许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码,从而实现了程序的“一次编写,到处运行”。
各种不同平台的虚拟机与所有平台都统一使用的程序存储格式——字节码是构成平台无关性的基石。
实现语言无关性的基础仍然是虚拟机和字节码存储格式。 Java虚拟机不和包含Java在内的任何语言绑定,它只和“Class 文件”这种特定的二进制文件格式所关联,Class 文件中包含了 Java 虚拟机指令集和符号表以及若干其他辅助信息。
基于安全方面的考虑,Java 虚拟机规范要求在 Class 文件中使用许多强制性的语法和结构化约束,但任何一门功能性语言都可以表示为一个能被 Java 虚拟机所接受的有效的 Class 文件。
作为一个通用的、机器无关的执行平台,任何其他语言的实现者都可以将 Java 虚拟机作为语言的产品交付媒介。
Java 语言中的各种变量、关键字和运算符号的语义最终都是由多条字节码命令组合而成的,因此字节码命令所能提供的语义描述能力肯定会比 Java 语言更加强大。
因此,有一些 Java 语言本身无法有效支持的语言特性不代表字节码本身无法有效支持,这也为其他语言实现一些有别于 Java 的语言特性提供了基础。
Java 平台无关性的基石的更多相关文章
- JVM(二),Java怎样实现一次编译到处运行(平台无关性)
二.Java怎样实现一次编译到处运行(平台无关性) 1.java平台无关性原理 Java源码首先被编译成字节码,再由不同平台的JVM进行解析,JAVA语言在不同的平台上运行时不需要进行重新编译,Jav ...
- Java是如何实现平台无关性的
相信对于很多Java开发来说,在刚刚接触Java语言的时候,就听说过Java是一门跨平台的语言,Java是平台无关性的,这也是Java语言可以迅速崛起并风光无限的一个重要原因.那么,到底什么是平台无关 ...
- Java的平台无关性
转载自:http://www.cnblogs.com/Y/archive/2011/03/22/JavaVM_Learning_Chapter2_Platform_Independence.html ...
- 深入Java虚拟机读书笔记第二章平台无关性
Java的体系结构对平台无关的支持 Java平台 Java的体系结构通过几种途径支持Java程序的平台无关性,其中主要是通过Java平台自己.Java平台扮演一个运行时Java程序与其下的硬件和操作系 ...
- 深入Java虚拟机(2)——Java的平台无关性
一.平台无关性的好处 Java技术在网络环境下非常有用,其中一个关键理由是,用Java创建的可执行二进制程序,能够不加改变地运行于多个平台. 这样的平台无关性随之带来许多的好处.这将极大地减轻系统管理 ...
- Java虚拟机的平台无关性与语言无关性
平台无关性 不同平台的不同java虚拟机,都执行同一种字节码文件,即Class文件 语言无关性 Java虚拟机不止能执行java程序,还有Clojure.Groovy.JRuby.Jython.Sca ...
- Java虚拟机与平台无关性
概述 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步. --<深入理解Java虚拟机>(从这里可以看到,字节码是一种文件格式) 我们都知道计算机只 ...
- Java的平台无关性如何体现出来的
传统的编程中,源代码编译为可执行的代码后,只能针对特定的平台(操作系统),换句话说,针对Windows编写和编译的代码,只能在Windows上运行... java程序则编译为字节码.字节码本身不能运行 ...
- Java虚拟机平台无关性
jruby Java 虚拟机面试题全面解析(干货) - Yano_nankai的博客 - CSDN博客 http://m.blog.csdn.net/Yano_nankai/article/detai ...
随机推荐
- 【STM32H7教程】第10章 STM32H7的FLASH,RAM和栈使用情况(map和htm文件)
完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第10章 STM32H7的FLASH,RAM ...
- Javaoop 遇到的问题
一.java 异常的捕获与处理 (免责声明:本博客里所引用的他人博客链接,只用作我个人的学习,同时非常感谢这些作者!) 1. https://blog.csdn.net/wei_zhi/articl ...
- ASP.NET三层架构项目创建流程
1.进入VS2010,新建项目—>Visual C#—>Web—>ASP.NET空Web应用程序,如图所示: 2.在解决方案处右击—>新建项目—>Windows—> ...
- Challenges-XSS
https://alf.nu/alert1 warmup adobe JSON
- 海康相机SDK二次开发只有视频无声音问题
海康SDK相信做企业开发的的同仁,在项目中经常会用到,毕竟使用范围这么广. 本次就开发遇到的奇葩问题来说明一下我们的解决方案. 场景 虽然海康有4200客户端,但是对于高度定制化的项目,肯定不能再使用 ...
- 一起学Android之Sqlite
概述 Android对Sqlite提供了完全友好的支持,在应用程序内部,都可以通过名称访问任何的数据库.建议通过SQLiteOpenHelpe的子类并通过重写onCreate() 方法进行创建数据表. ...
- QT读取xml配置文件
//获取字符串字段 QString ConfigHelper::GetStringConfigValue(QString str) { if(str == "InitDeviceNo&quo ...
- VMWare安装Mac系统后无法全屏显示的问题
系统: VMTOOLs下载: 链接:https://pan.baidu.com/s/1KIzVWtPrb2vSrtokONToBw 提取码:zea3 1.虚拟机设置--显示器--监视器--指定监视器设 ...
- 关于'selffilter' is not a registered tag library. Must be one of:
报错代码: 'selffilter' is not a registered tag library. Must be one of: admin_list admin_modify admin_st ...
- JAVA中AWT编程
JAVA使用AWT和Swing 类完成图形用户界面编程,AWT全称是抽象窗口工具集(Abstract Window Toolkit),它是最早的sun提供的GUI库(Graphics User Int ...