Java体系结构
之前一直在用Java,但对Java的体系结构并不是很了解,最近也是看书才开始关注这方面的内容,做了一些笔记,摘抄给大家共同学习。
Java体系结构包括四个独立但相关的技术:
-
Java程序设计语言
-
Java class文件格式
-
Java应用编程接口( APl)
Java虚拟机
当编写并运行一个Java程序时, 就同时用到了这四种技术。 用Java编程语言编写源代码, 把它编译成Java class文件, 然后再在Java虚拟机中运行class文件。 当编写程序时, 通过调用类(这些类实现了Java API)中的方法来访问系统资源(比如I/0)。当程序运行的时候,它通过调用class文件中实现了Java APl的方法来满足程序的Java API调用, 通过下图看一下这四者之间的联系。
ava虚拟机和ava API一起组成了一个“平台",所有Java程序都在这上面编译。 Java虚拟机和Java API的组合除了被称为Java运行时系统之外, 还被称为Java平台(从版本1.2开始, 称为Java2平台)。 Java程序可以在不问的计算机上运行,这是因为Java平台自已可以用软件实现。
下面先简单介绍下各个模块,然后再具体说明。
Java程序设计语言
尽管Java是为网络设计的, 但Java的应用并不局限于网络。 平台无关性、 网络移动性和安全性是网络计算环境最重要的因素, 但是并不是每个人都会遇到面向网络的间题。 因此,也并不是任何时候都需要编写具备平台无关的程序。 有时可能并不需要从网上传递程序成者通过安全的约束限制程序的能力。 有时使用Java技术的首要原因可能只是因为想要利用Java程序设计语言的优势。
Java class文件
Java class文件主要在平台无关性和网络移动性方面使Java更适应于网络。它在平台无关性方面的任务是: 为Java程序提供独立于底层主机平台的二进制形式的服务,这正是 Java虚拟机所期望实现的。 这种途径打破了C或者C++等语言所遵循的传统, 使用这些传统语言写的程序通常首先被编译, 然后被连接成为単独的、 专门支持特定硬件平台和操作系统的二进制文件 。通常情况下 , 一个平台上的二进制可执行文件不能在其他平台上工作 。而Java class文件是可以运行在任何支持Java虚拟机的硬件平合和操作系统上的二进制文件 。
Java APl
JaVa API通过支持平台无关性和安全性,使得Java适用于网络应用。Java APl是运行库的集合, 它提供一套访问主机系统资源的标准方法。编写Java程序时, 可以假设在任何可运行程序的Java虚拟机上都能够获取Java API class文件。这是一个相对安全的假设。因为Java虚拟机和Java API class文件是任何Java平合都要实现的必要部分。运行Java程序时.虚拟机装载程序的class文件所使用的Java API class文件。所有被装载的class文件(包括从应用程序中和从Java API中提取的)和所有已经装载的动态库(包含本地方法)共同组成了在Java虚拟机上适运的整个程序。
Java虚拟机
Java的面向网络的核心就是Java虚拟机, 它支持Java面向网络体系结构三大支柱的所有方面:平台无关性、 安全性和网络移动性。
Java虚拟机是一台抽象的计算机, 其规范定义了每个Java虚拟机都必须实现的特性, 但是每个特定实现都留下了很多选择。 举个例子,虽然每个Java虚拟机都必须能够执行Java字节码,但是用何种技术来执行是可以选择的。而且,它的规范也很灵活,它允许虚拟机用纯粹软件方式来实现, 也可以很大部分由硬件实现 。
Java虚拟机的主要任务是加载class文件并且执行其中的字节码。Java虚拟机包含一个类装载器(class loader).它可以从程序和ApI中装裁class文件。 Java APl中只有程序执行时需要的部些类才会被加载 。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
TypeScript + Vue 传统多页面开发模式配置方案
这种开发方式很非主流,但我确实有这种需求。Vue 适合用来开发 SPA 单页应用,所以连官方文档和网络上的各种资料、问答也都是适合用于单页应用的项目配置。 我也是最近因为种种原因才开始接触 Vue,发现对于网页中需要有大量数据变动和组件联动情况下,Vue 还是比较方便的。所以打算用 TypeScript 和 Vue 集成到以前使用 layui 的后台中去,开发一些新的比较复杂的页面。 这一套配置,我花了4天研究出来,也算是弥补这一领域的空缺吧。前端高手勿喷,我只是一个更倾向于后端的开发者,多页面应用目前确实还有很多应用,否则 layui 也不会这么受欢迎了! 配置方案码云地址:https://gitee.com/yurunsoft/TypescriptAndVue 项目组成 IDE:VSCode 开发语言:TypeScript 用到的 JS 库: jQuery、RequireJS、Vue (可选)、其它(如 layui 你都可以自己集成进来) 编译工具:gulp TS 代码提示:typings 实现功能 代码提示 无报错 支持传统多页面入口开发模式 为何要使用这些工具来组成项目 首先说...
- 下一篇
Java 泛型优点之编译时类型检查
Java 泛型优点之编译时类型检查 使用泛型代码要比非泛型代码更有优势,下面是 Java 官方教程对泛型其中一个优点的介绍: “Stronger type checks at compile time. A Java compiler applies strong type checking to generic code and issues errors if the code violates type safety. Fixing compile-time errors is easier than fixing runtime errors, which can be difficult to find.” 现在我有两点 疑问 : 1、 在使用泛型时能在编译时被检测出的问题,在未使用泛型时是怎样的情况?即怎样才会出现这类上文中最后一句提到的不是更容易解决的运行时错误?(以代码举例) 2、 Java 如何提供这种编译时的更强的类型检查(第一句)。 解决 在 Java 还未明确的实现泛型机制之前,是具有泛型能力的,只不过没有进行语法层次上的包装。比如以容器举例。 容器的中的元素基...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7设置SWAP分区,小内存服务器的救世主
- Mario游戏-低调大师作品
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- 2048小游戏-低调大师作品
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题