java虚拟机1
来源:互联网 发布:软件开发过程不包括 编辑:程序博客网 时间:2024/06/17 19:35
- 特性
平台无关性:
“java是为网络而设计的”“一般网络有很多不同的设备,不同的硬件体系,操作系统,java通过创建与平台无关的程序来解决这个问题”
安全性:
"从网络上下载的程序可以以不同的定制安全级别运行"
java在设计时就避免了很多bug的出现。
网络移动性:
“传递二进制代码”
- 虚拟机
“从版本1.2开始,Java虚拟机和javaAPI 称为java2平台”
![](file:///C:/Users/Tina/AppData/Local/Temp/enhtmlclip/Image.png)
“java虚拟机的主要任务是装载class文件并且执行其中的字节码”
虚拟机的基本结构图:![](file:///C:/Users/Tina/AppData/Local/Temp/enhtmlclip/Image(1).png)
![](file:///C:/Users/Tina/AppData/Local/Temp/enhtmlclip/Image(1).png)
不同的虚拟机里,执行引擎的实现会有不同,大致有三种:
1、一次性解释字节码
2、第一次被执行的字节码将会被编译成本地机器代码缓存,下次使用时,直接调用
3、优化的方法:监视运行中的活动,记录下最频繁的代码段,把这些编译成本地机器代码缓存。其他的还是保存字节码。
java中有两种方法:
1、java方法,是用java语言编写的,是平台无关的
2、本地方法,是用c,c++,汇编等语言写的,是与平台相关的,保存在动态连接库中。java本地接口:JNI
- 类装载器
被不同的装载器装载的类存放在不同的命名空间中,默认情况下被装载的类也只能看到被同一个类装载器装载的类。这样能控制不同源文件中装载代码之间的相互影响,阻止恶意代码获取访问和破坏善意代码的权限。
- java的class文件
- java程序
![](file:///C:/Users/Tina/AppData/Local/Temp/enhtmlclip/Image(2).png)
javaAPI文件调用了本地方法,提供了与平台无关的标准接口。因此java程序也就平台无关了。
java相对于c++来说,编程的效率更高,程序的健壮性更高体现在:
1、java不允许通过强制转换指针类型或者通过指针运算来直接访问内存。
2、java会自动进行垃圾回收,编程变得简单。
3、java进行了数组边界的检查,而c++可以操作超过数组大小的元素。
4、java不允许引用为空,在c++中引用为空会导致程序崩溃,而在java中会抛出异常,抛出异常后,所在线程死亡,但是其他线程还能进行,程序也不会退出。
java的缺点:
1、速度慢
2、内存管理和线程调度的缺陷。不知道垃圾回收器什么时候工作,线程松散,导致实时响应差
3、最小公分母问题。不同操作系统之间有共性,但也有差别,javaAPI设计时考虑哪些共性是个问题。
4、java的二进制文件(class文件)可以非常容易地逆向编译为java源码文件,这使得代码的版权保护变的困难。
最近看的《深入理解java虚拟机》,做的笔记+理解,跟大家分享,如果有错误,也希望大家提出来~~~
0 0
- 深入JAVA虚拟机 1
- Java虚拟机探索1
- java虚拟机1
- java虚拟机_jvm(1)
- Java虚拟机1
- Java虚拟机笔记--1
- Java虚拟机1
- Java虚拟机(1)
- 深入理解Java虚拟机(1)-虚拟机是什么
- Java虚拟机1:什么是Java
- Java虚拟机1:什么是Java
- Java虚拟机1:Java简介
- Java 虚拟机学习(1)---java虚拟机简介
- [Java 虚拟机] - 1,Java虚拟机如何实现跨平台
- java虚拟机学习笔记1
- java虚拟机学习笔记1
- 深入Java虚拟机(1)
- java虚拟机原理图解1
- Longest Common Prefix
- GO语言学习: 项目构建 及编译 初步
- K中心点算法(K-medoids) java实现
- Android异步批量下载图片并缓存
- 通过java的反射机制实现Map、JavaBean、JSON的相互转换工具类
- java虚拟机1
- TCP 的那些事儿(下)
- CRC32 算法
- 用mediastreamer2建立一个音频RTP流
- hdu5256序列变换(非递减子序列)
- HDU2473 并查集的删除
- 在windows7上,Qt导入opencv库的悲剧之旅
- 指向数组的指针
- 【浅墨著作】《OpenCV3编程入门》内容简单介绍&勘误&配套源码下载