1. JDK
学了一段子的java了. 对于C盘下面java 目录下的这些东东, 还真是不太了解, 今天查了查, 大概的总结一下..
(1)文档结构
jdk
___________|____________________
| | | |
bin lib demo jre
| | __________|___________
java.exe tools.jar | |
javac.exe dt.jar bin lib
javap.exe ________|____
javah.exe | | |
javadoc.exe rt.jar ext security
(2)bin目录下 包含的可执行的基本组件包括:
javac – 编译器,将源程序转成字节码
jar – 打包工具,将相关的类文件打包成一个文件
javadoc – 文档生成器,从源码注释中提取文档
jdb – debugger,查错工具
java – 运行编译后的java程序(.class后缀的)
appletviewer:小程序浏览器,一种执行HTML文件上的Java小程序的Java浏览器。
Javah:产生可以调用Java过程的C过程,或建立能被Java程序调用的C过程的头文件。
Javap:Java反汇编器,显示编译类文件中的可访问功能和数据,同时显示字节代码含义。
Jconsole: Java进行系统调试和监控的工具
2. Java类的装载机制
JVM本身包含了一个ClassLoader称为Bootstrap ClassLoader,和JVM一样,BootstrapClassLoader是用本地代码实现的,它负责加载核心JavaClass(即所有java.*开头的类)。另外JVM还会提供两个ClassLoader,它们都是用Java语言编写的,由BootstrapClassLoader加载;其中Extension ClassLoader负责加载扩展的Javaclass(例如所有javax.*开头的类和存放在JRE的ext目录下的类),ApplicationClassLoader负责加载应用程序自身的类。
当运行一个程序的时候,JVM启动,运行bootstrapclassloader,该ClassLoader加载java核心API(ExtClassLoader和AppClassLoader也在此时被加载),会到rt.jar中自动加载,然后调用ExtClassLoader加载扩展API,最后AppClassLoader加载CLASSPATH目录下定义的Class,这就是一个程序最基本的加载流程。
值得注意的是: 一旦一个类被载入JVM中,同一个类就不会被再次载入了..
这跟 我们用的Eclipse 貌似不同. Eclipse 可是动态编译, 实时监听 .class文件的.
而正常dos环境, 命令操作测试下, 在加载一个类之后, 不管是删除了还是改动了这个类, JVM都不会有丝毫影响.(除非重新启动)
3. java 类加载器 -- ClassLoader
这个 查了些资料, 自己还是理不是很清楚...
先看看这篇文章吧 写的很不错. 待我再琢磨琢磨...
http://jiajun.iteye.com/blog/608564
后面补充点, 关于自己写 ClassLoader.
Why use your own ClassLoader?
似乎JVM自身的ClassLoader已经足够了,为什么我们还需要创建自己的ClassLoader呢?
因为JVM自带的ClassLoader只是懂得从本地文件系统加载标准的java class文件,如果编写你自己的ClassLoader,你可以做到:
1)在执行非置信代码之前,自动验证数字签名
2)动态地创建符合用户特定需要的定制化构建类
3)从特定的场所取得java class,例如数据库中
4) 等等
事实上当使用Applet的时候,就用到了特定的ClassLoader,因为这时需要从网络上加载java class,并且要检查相关的安全信息。
目前的应用服务器大都使用了ClassLoader技术,即使你不需要创建自己的ClassLoader,了解其原理也有助于更好地部署自己的应用。
暂时理解到这么多. 姑且就写这样吧.
分享到:
相关推荐
- `java.util.Vector` 是线程安全的动态数组,可以自动调整大小,适用于多线程环境。 - **栈类 Stack** - `java.util.Stack` 继承自 `Vector`,实现了一个后进先出 (LIFO) 的数据结构。 - **哈希表类 Hashtable*...
本文主要讲述如何利用Java编程语言中的Jsoup库和HttpClient工具包来获取和解析动态生成的数据,特别是那些通过JavaScript动态加载的数据。 ### Java爬虫基础 Java爬虫是指使用Java语言编写的一类程序,这些程序...
- **1.4 本章小结** - 对求职过程进行了总结,并强调了成功应聘的关键因素。 #### 二、Java试题篇 - **2.1 Java概述和开发环境** - **理解Java**:介绍Java的历史背景、特点及其应用场景。 - **构建Java开发...
本小结将围绕“2013CCF讲习班-智能终端安全与取证”的相关知识展开详细探讨。 智能终端安全的概念可以从三个方面进行理解:源头、路径和终端。源头指的是应用程序(APP)的下载与安装环节,这是安全的第一道防线;...
在《关于static的小结(Java内存溢出)》这篇文章中,作者主要探讨了与Java中的`static`关键字相关的知识点,以及如何可能导致内存溢出的情况。下面我们将深入分析这些内容。 #### Java中的`static`关键字 `static...
### Java实验知识点总结 #### 实验一:贪心猪小游戏 ...通过这些实验,学生们不仅能够加深对Java语言的理解,还能学习到软件工程的基础知识和技术实践,为将来从事相关领域的工作打下坚实的基础。
Java内存分配和管理是Java编程中的关键概念,它关乎程序的性能和稳定性。...以上就是Java内存分配和管理的基本概述,了解这些知识点有助于优化代码性能,避免内存泄漏,以及更好地理解和解决程序中的并发问题。
这个“java课程小结.rar_北京理工大学JAVA课程”压缩包中包含的“课程小结”文件,很可能是教授精心编写的教学精华,旨在帮助学生巩固所学知识并为后续学习打下坚实基础。 在Java课程中,有几个核心概念和技术是必...
为了全面理解Java基础知识,本小结将按照给定的文件名,逐一解析关键知识点。 1. **Java基础知识** 这一部分通常包括Java语言的基础语法,如变量、数据类型、运算符、流程控制(if语句、switch、for、while循环等...
Cavaj是一款强大的Java反编译工具,它能够将Java字节码(.class文件)反编译为源代码(.java文件),这对于学习和理解Java编译后的字节码结构非常有帮助。通过Cavaj,开发者可以查看和分析第三方库或框架的内部工作原理...
- **2.2.3 区分实例成员和静态成员**:讲解实例变量与静态变量的区别。 - **2.2.4 理解继承**:探讨继承的概念及其在Java中的实现方式。 - **2.2.5 熟悉Java的常用命令**:列举并解释常见的Java命令行工具。 - *...
本文档“JAVA程序:接口小结”很可能是对Java接口的全面总结,包含了相关的代码示例,帮助学习者深入理解和运用接口。 接口在Java中的主要特性包括: 1. **接口是完全抽象的**:接口中的所有方法默认都是抽象的,...
在Java开发中,Spring框架是不可或缺的一部分,它提供了一个强大的依赖注入(DI)和面向切面编程(AOP)的容器。Spring的核心在于其BeanFactory和ApplicationContext,它们使得对象的管理和装配变得简单。这里我们将...
在 Java 编程语言中,`this` 关键字是一个非常重要的概念,它用来...理解并熟练运用 `this` 关键字对于编写清晰、高效的 Java 代码至关重要。在实际编程中,应根据需要灵活运用 `this`,以提高代码的可读性和可维护性。
**3.6 课后小结** 本章主要讲解了Java反射机制的基本概念、使用方法和应用场景,强调了其灵活性和在框架设计中的重要性。 **3.7 课后习题** 设计习题,让学习者通过实践加深对反射的理解,如编写一个工具类,动态...
- 包括目录、绪论、正文、小结、参考文献等部分。 - 装订符合学校统一要求。 #### 七、评分标准 - **评分项**: - 网站设计完成情况: 20分 - 信息处理: 20分 - 设计与编码过程: 40分 - 回答问题: 20分 - **...
### Java核心机制与基础知识梳理 #### Java虚拟机(JVM) Java虚拟机是Java的核心机制之一,它是一种抽象计算机,负责执行Java字节码。Java程序编译后的字节码文件(.class)可以在任何安装了Java运行环境的平台上...
#### 小结 本章节概述了Java的基础概念和技术要点,包括Java的特点、运行机制、开发环境的搭建、注释、标识符、变量和命名规则等内容。这些基础知识对于深入学习Java至关重要,也是后续章节讨论更复杂主题的基础。...
#### 七、小结 内部类为Java程序设计提供了强大的灵活性和封装能力。理解不同类型的内部类以及它们之间的差异对于编写高质量的Java代码至关重要。通过合理使用内部类,开发者可以更好地组织代码逻辑,提高代码的...
本文将围绕Java的基础知识、进阶概念以及一些常见面试题进行探讨,帮助读者深入理解Java J2SE(Java标准版)和J2EE(Java企业版)的学习要点。 1. 面向对象思想:面向对象编程(OOP)是Java的核心,它强调通过对象...