1.java中的applet小程序是怎么运行在浏览器中的?
以前一直以为是客户端装有jre或者安装了插件,现在明白了,原来使用浏览器中自带的虚拟机,但是由于IE对于java支持不完全,如果要确保良好运行还是需要安装jre的,javaPlug-in软件就是使applet程序运行在sun的jre中而不是浏览器自带的虚拟机中。
2.jre版本管理
java的解决办法是每一个软件自带一套jre版本,比如oracle等软件都会同时安装jre的,如果在同一台机器上安装多个带有jre的软件,那么机器上就存在多个jre版本了,应用程序怎么查找到属于自己的jre呢?
操作系统寻找JRE的方式如下:
先找当前目录下有没有JRE
再找父目录下有没有JRE
接着在PATH路径中找JRE
注册表HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\ 查看CurrentVersion的键值指向哪个JRE
最常用的是在PATH路径中找JRE,一般情况下,自己的程序运行之前都会先在批处理文件里面临时设置PATH,把自己用的JRE放到PATH路径最前面,所以肯定会运行自己带的JRE,不会造成版本混乱。
3.jre类库查找方法
jre中的 JRE\lib\rt.jar这个jar包,包含了所有的java 2平台标准的类库, JRE中由ClassLoader负责查找和加载程序引用到的类库,基础类库ClassLoader会到rt.jar中自动加载,其它的类库,ClassLoader在环境变量CLASSPATH指定的路径中搜索,按照先来先到的原则,放在CLASSPATH前面的类库先被搜到,Java程序启动之前建议先把PATH和CLASSPATH环境变量设好,OS通过PATH来找JRE,确定基础类库rt.jar的位置,JRE的ClassLoader通过CLASSPATH找其它类库。
4.Java的虚拟机启动和加载类库
在Console执行java.exe xxx命令以后,如前所述的寻找JRE,OS找到JRE目录,根据java.exe的传递参数,选择加载Server版的jvm.dll还是Client版的jvm.dll,然后加载jvm.dll,把控制权交给jvm.dll。
接下来,jvm.dll进行初始化,分配内存等等动作,然后在CLASSPATH路径中寻找class,找到class以后,寻找class中的程序入口点Main函数,然后从Main函数执行程序,在执行过程中,使用ClassLoader动态加载一系列引用到的类。当调用到native方法时,jvm.dll告诉OS在JRE\bin目录下寻找某某DLL文件,调入内存,于是实现了JNI调用。
分享到:
相关推荐
乙说:我本来不知道我的帽子的颜色,但是我现在知道了。答案是:甲的帽子是蓝色,乙的帽子是红色。 4. 生日问题: 小明和小强都是王老师的学生,王老师的生日是 M 月 N 日,2 人都知道王老师的生日是下列 10 组中的...
MD5和SHA-1曾经广泛使用,但由于安全性问题,现在已被更安全的SHA-256和SHA-3取代。 5. **数字签名**:数字签名结合了非对称加密和哈希函数,用于验证数据的完整性和发送者的身份。它是电子商务和电子合同中的重要...
网络基础知识大全 1 网络常用基础知识: 3 1)如何查看本机所开端口: 3 2)如何获得一个IP地址的主机名? 3 3)如何查看本机的ip地址? 3 4)再使用net命令的时候遇到一些错误代码,如何查看对应的错误信息? 4 5)...
现在,我们转向Java并发面试问题,这些问题是评估开发者在多线程环境中的理解和技能的关键: 1. **线程安全**:理解什么是线程安全,如何识别非线程安全的代码,并知道如何使用synchronized关键字、volatile变量、...
零基础入门深度学习(4) - 卷积神经网络 深度学习是一个热门的技术领域,近年来,在人工智能、图像识别、自然语言处理等领域取得了突破性的进展。零基础入门深度学习系列文章旨在帮助有理想有追求的程序员,从零基础...
6. 巧克力装盒问题中,过去每盒40块装15盒,现在只有12盒,要计算平均每盒多装的巧克力数量,首先需要知道原来的总巧克力数量,然后用这个总数除以新的盒数,最后减去原来的每盒数量。 这些题目旨在帮助四年级学生...
Linux 操作系统基础教程 清华大学信息学院计算机系 目 录 前言..........................................................................................................................................
但是凭借谷歌公司的强大实力以及与开放手机联盟的通力合作,我们相信Android会越来越好,一定会成为主流的手机操作系统平台。.. 本书分为3个部分共10章,最后还有两个附录。第1~3章介绍Android的基础知识和基本...
当 n 比较大时,Fn 也非常大,现在我们想知道,Fn 除以 10007 的余数是多少。解决这个问题需要使用递推公式来计算 Fibonacci 数列,并使用取余数的方法来获得答案。 知识点: * 递推公式的使用 * 取余数的方法 * ...
JTAG 介绍基础 JTAG(Joint Test Action Group),是一种国际标准测试协议(IEEE 1149.1 兼容),主要用于芯片内部测试。现在多数的高级器件都支持 JTAG 协议,如 DSP、FPGA 器件等。标准的 JTAG 接口是 4 线:TMS...
### 你必须知道的495个C语言问题-精简版 #### 1.1 如何决定使用哪种整数类型? 在C语言中选择合适的整数类型对于编写高效且可维护的代码至关重要。通常情况下,你可以根据以下指导原则来进行选择: - **如果需要...
例如,句子“宇宙中别的星球是否有生命,现在还是个谜”,这里的“现在”和“过去”形成了对比,表明对于某些问题,我们过去可能不知道答案,但现在可能有了新的认识或疑问。 2. 当初:当初通常用来指早期或事情的...
1. 如果有一定的数据库基础,知道SQL是怎么回事,即使写不出来简单的SQL,但可以看懂它们,你就可以跳到2。 2. 要想学好ORACLE,首先要学习ORACLE的体系结构,现在你不需要深入理解它们,但要分清几个关键的概念:...
博弈论是一种用于分析决策者之间相互作用的数学理论,它起源于经济学,但现在已被广泛应用于社会学、法学、政治学、心理学等多个领域。该理论的核心是寻找博弈中的均衡点,也就是参与者在考虑到其他人的策略选择后,...
本资源摘要信息涵盖了C#基础试题和常用字符串例子,总共包括24个问题和例子,涵盖了C#基础知识、字符串定义、字符串方法、字符串操作等方面,旨在帮助读者快速掌握C#基础知识和字符串操作。 一、C#基础试题 1.什么...
1. **表单验证**:在用户输入时,利用Ajax即时验证数据的有效性,避免了提交后才知道错误的情况。 2. **分页加载**:滚动页面时,后台动态加载更多内容,如社交媒体的新闻动态。 3. **搜索建议**:用户在搜索框...