Java基础(下)(JVM、API)
Java基础(下)
第三部分:Java源程序的编辑
我们知道,计算机是不能直接理解源代码中的高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
翻译的方式有两种:一个是编译,一个是解释,而两种方式的优缺点各不相同,编译的速度快,但不能跨平台,而解释却恰恰相反,翻译的速度慢,但是能够跨平台。因此,Java采用半编译半解释语言,速度既快,也能跨平台。
作为编译型语言,Java中的所有源程序文件被编译后,统一生成一种被称为Java字节码的中间语言。与C语言生成特定硬件和操作平台不同是,Java程序编译后生成的字节码对所有的计算机都是相同的。因为编译后的文件名后缀为class,所以字节码文件又称为Java类文件。
作为解释型语言,Java源代码编译后生成的字节码文件是不能直接执行的,需要一个称为Java虚拟机的程序翻译成本地的机器码后才能执行,如图所示:
类名.java→javac.exe→类名.class→JVM→本地代码
Java虚拟机本质上是一个软件,该软件被放在某个操作系统上,例如Unix,Linux,Windows等,从而为相应操作系统上Java程序的运行提供一个独立的标准环境。Java虚拟机之所以称为“虚拟”机,就是让我们把这个软件当做一个虚拟的机器。我们编写的Java程序运行在这个虚拟的机器上,隔离具体的操作系统和硬件平台,从而实现了Java程序的跨平台特性:在一个操作系统上开发的的程序可以在任何操作系统上运行,这就是SUN所宣扬的”一次编写,到处执行“。
第四部分:JavaAPI
一个复杂的Java程序可能要牵涉网络,安全,数据库访问,图形等等方面,如果所有这些都让我们自己从头到尾编写,即使一个简单的应用也会耗费我们大量的时间。因此,SUN在发布JVM时,也为我们提供了一个庞大的类库,这就是JavaAPI。JavaAPI中是一些已经完成的软件组件,这些组件提供了Java编程语言的核心功能。我们可以在我们编写的应用程序中使用这些组件。JavaAPI与JVM一起,将我们编写的Java程序与下层硬件隔离,如图所示:

Java基础(下)(JVM、API)的更多相关文章
- Java基础篇(JVM)——类加载机制
这是Java基础篇(JVM)的第二篇文章,紧接着上一篇字节码详解,这篇我们来详解Java的类加载机制,也就是如何把字节码代表的类信息加载进入内存中. 我们知道,不管是根据类新建对象,还是直接使用类变量 ...
- Java基础-考察JVM内部结构的常用工具介绍
Java基础-考察JVM内部结构的常用工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们可以通过jvisualvm.exe考察jvm内部结构.而jvisualvm.exe ...
- Java基础篇(JVM)——字节码详解
这是Java基础篇(JVM)的第一篇文章,本来想先说说Java类加载机制的,后来想想,JVM的作用是加载编译器编译好的字节码,并解释成机器码,那么首先应该了解字节码,然后再谈加载字节码的类加载机制似乎 ...
- Java基础技术JVM面试【笔记】
Java基础技术JVM面试[笔记] JVM JVM 对 java 类的使用总体上可以分为两部分:一是把静态的 class 文件加载到 JVM 内存,二是在 JVM 内存中进行 Java 类的生命周期管 ...
- Java基础:JVM垃圾回收算法
众所周知,Java的垃圾回收是不需要程序员去手动操控的,而是由JVM去完成.本文介绍JVM进行垃圾回收的各种算法. 1. 如何确定某个对象是垃圾 1.1. 引用计数法 1.2. 可达性分析 2. 典型 ...
- Java基础篇——JVM之GC原理(干货满满)
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10697554.html ,多多支持哈! 一.什么是GC? GC是垃圾收集的意思,内存处理是 ...
- java基础(15):常用API(Object、String、StringBuffer)
1. Java的API及Object类 在以前的学习过程中,我们都在学习对象基本特征.对象的使用以及对象的关系.接下来我们开始使用对象做事情,那么在使用对象做事情之前,我们要学习一些API中提供的常用 ...
- 面试题(二)—Java基础(下)
一.进程和线程 进程 (1)正在运行的程序,是系统进行资源分配和调用的独立单位. (2)每一个进程都有它自己的内存空间和系统资源. 线程 (1)是进程中的一条执行路径. (2)一个进程如果只有一条执行 ...
- Java基础--虚拟机JVM
JVM内存结构 Heap Space: 堆内存(Heap Space)是由Young Generation和Old Generation组成,而Young Generation又被分成三部分,Eden ...
- 面试【JAVA基础】JVM
1.内存模型 1.1.堆 堆是所有线程共享的,主要存放对象实例和数组. 新生代和老年代的比例是1:2. 新生代中三个区域的比例是 8 : 1 : 1. 1.1.1.新生代 对象分配在eden区中,当e ...
随机推荐
- [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds...
INSERT INTO `ftms_active_dealer`(dealer_code,dealer_name,active_id,dealer_state)VALUES('415A1','贺磊'1 ...
- 如何让sql自动定时执行某个存储过程
/*--创建作业--邹建 2003.10--*//*--调用示例--每月执行的作业exec p_createjob @jobname='mm',@sql='select * from syscolum ...
- [译]如何定义python源文件的文件编码
简介 这篇文章是为了介绍定义python源文件文件编码的方法.python解释器可以根据所指定的编码信息对当前文件进行解析.通常来说,这种方法可以提高解析器对Unicode编码的源文件的识别,并且支持 ...
- Centos6.5 mysql折腾记
1.yum安装mysql [root@localhost ~]# yum -y install mysql-server 安装结果 Installed: mysql-server.x86_64 0:5 ...
- 你不知道的getComputedStyle
你不知道的getComputedStyle jQuery的css()的底层实现就用到了getComputedStyle这个方法,也许我们用到的很少,但是不得不说这时一个非常强大的函数,下面让我们一探究 ...
- C++编程练习(7)----“KMP模式匹配算法“字符串匹配
子串在主串中的定位操作通常称做串的模式匹配. KMP模式匹配算法实现: /* Index_KMP.h头文件 */ #include<string> #include<sstream& ...
- C++编程练习(4)----“实现简单的栈的链式存储结构“
如果栈的使用过程中元素数目变化不可预测,有时很小,有时很大,则最好使用链栈:反之,如果它的变化在可控范围内,使用顺序栈会好一些. 简单的栈的链式存储结构代码如下: /*LinkStack.h*/ #i ...
- ORACLE_INSERT
Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少.但我 ...
- CoreImage-python截取核心图片
去年项目中用到的图片截取,所以使用python写了一个,分享给大家,欢迎批评指正. github地址:https://github.com/george518/CoreImage 作用 核心图片:是指 ...
- Java实现二叉树的前序、中序、后序遍历(递归方法)
在数据结构中,二叉树是树中我们见得最多的,二叉查找树可以加速我们查找的效率,那么输出一个二叉树也变得尤为重要了. 二叉树的遍历方法分为三种,分别为前序遍历.中序遍历.后序遍历.下图即为一个二叉 ...