`
蛋呢823
  • 浏览: 73497 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

小结-- java动态与静态的理解

阅读更多

 

 

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精华之--深入JAVA API

    - `java.util.Vector` 是线程安全的动态数组,可以自动调整大小,适用于多线程环境。 - **栈类 Stack** - `java.util.Stack` 继承自 `Vector`,实现了一个后进先出 (LIFO) 的数据结构。 - **哈希表类 Hashtable*...

    Java爬虫Jsoup+httpclient获取动态生成的数据

    本文主要讲述如何利用Java编程语言中的Jsoup库和HttpClient工具包来获取和解析动态生成的数据,特别是那些通过JavaScript动态加载的数据。 ### Java爬虫基础 Java爬虫是指使用Java语言编写的一类程序,这些程序...

    java面试题目精选

    - **1.4 本章小结** - 对求职过程进行了总结,并强调了成功应聘的关键因素。 #### 二、Java试题篇 - **2.1 Java概述和开发环境** - **理解Java**:介绍Java的历史背景、特点及其应用场景。 - **构建Java开发...

    2013CCF讲习班-智能终端安全与取证-小结-PPT

    本小结将围绕“2013CCF讲习班-智能终端安全与取证”的相关知识展开详细探讨。 智能终端安全的概念可以从三个方面进行理解:源头、路径和终端。源头指的是应用程序(APP)的下载与安装环节,这是安全的第一道防线;...

    关于static的小结(Java内存溢出)

    在《关于static的小结(Java内存溢出)》这篇文章中,作者主要探讨了与Java中的`static`关键字相关的知识点,以及如何可能导致内存溢出的情况。下面我们将深入分析这些内容。 #### Java中的`static`关键字 `static...

    java实验--贪心猪小游戏、输入输出流、图形化界面、图书系统.docx

    ### Java实验知识点总结 #### 实验一:贪心猪小游戏 ...通过这些实验,学生们不仅能够加深对Java语言的理解,还能学习到软件工程的基础知识和技术实践,为将来从事相关领域的工作打下坚实的基础。

    Java内存分配、管理小结.doc

    Java内存分配和管理是Java编程中的关键概念,它关乎程序的性能和稳定性。...以上就是Java内存分配和管理的基本概述,了解这些知识点有助于优化代码性能,避免内存泄漏,以及更好地理解和解决程序中的并发问题。

    java课程小结.rar_北京理工大学JAVA课程

    这个“java课程小结.rar_北京理工大学JAVA课程”压缩包中包含的“课程小结”文件,很可能是教授精心编写的教学精华,旨在帮助学生巩固所学知识并为后续学习打下坚实基础。 在Java课程中,有几个核心概念和技术是必...

    java基础知识从业必备知识点结构图小结.rar

    为了全面理解Java基础知识,本小结将按照给定的文件名,逐一解析关键知识点。 1. **Java基础知识** 这一部分通常包括Java语言的基础语法,如变量、数据类型、运算符、流程控制(if语句、switch、for、while循环等...

    core java 小结

    Cavaj是一款强大的Java反编译工具,它能够将Java字节码(.class文件)反编译为源代码(.java文件),这对于学习和理解Java编译后的字节码结构非常有帮助。通过Cavaj,开发者可以查看和分析第三方库或框架的内部工作原理...

    JavaJava+EE软件工程师就业求职手册.doc

    - **2.2.3 区分实例成员和静态成员**:讲解实例变量与静态变量的区别。 - **2.2.4 理解继承**:探讨继承的概念及其在Java中的实现方式。 - **2.2.5 熟悉Java的常用命令**:列举并解释常见的Java命令行工具。 - *...

    JAVA程序:接口小结

    本文档“JAVA程序:接口小结”很可能是对Java接口的全面总结,包含了相关的代码示例,帮助学习者深入理解和运用接口。 接口在Java中的主要特性包括: 1. **接口是完全抽象的**:接口中的所有方法默认都是抽象的,...

    Java中Spring获取bean方法小结

    在Java开发中,Spring框架是不可或缺的一部分,它提供了一个强大的依赖注入(DI)和面向切面编程(AOP)的容器。Spring的核心在于其BeanFactory和ApplicationContext,它们使得对象的管理和装配变得简单。这里我们将...

    Java中this关键字使用小结

    在 Java 编程语言中,`this` 关键字是一个非常重要的概念,它用来...理解并熟练运用 `this` 关键字对于编写清晰、高效的 Java 代码至关重要。在实际编程中,应根据需要灵活运用 `this`,以提高代码的可读性和可维护性。

    Java高级程序设计实战教程第三章-Java反射机制.pptx

    **3.6 课后小结** 本章主要讲解了Java反射机制的基本概念、使用方法和应用场景,强调了其灵活性和在框架设计中的重要性。 **3.7 课后习题** 设计习题,让学习者通过实践加深对反射的理解,如编写一个工具类,动态...

    java计算器 实验报告

    - 包括目录、绪论、正文、小结、参考文献等部分。 - 装订符合学校统一要求。 #### 七、评分标准 - **评分项**: - 网站设计完成情况: 20分 - 信息处理: 20分 - 设计与编码过程: 40分 - 回答问题: 20分 - **...

    java个人总结,觉得还不错

    ### Java核心机制与基础知识梳理 #### Java虚拟机(JVM) Java虚拟机是Java的核心机制之一,它是一种抽象计算机,负责执行Java字节码。Java程序编译后的字节码文件(.class)可以在任何安装了Java运行环境的平台上...

    传智播客毕向东Java基础课堂笔记

    #### 小结 本章节概述了Java的基础概念和技术要点,包括Java的特点、运行机制、开发环境的搭建、注释、标识符、变量和命名规则等内容。这些基础知识对于深入学习Java至关重要,也是后续章节讨论更复杂主题的基础。...

    JAVA语法总结 - 内部类

    #### 七、小结 内部类为Java程序设计提供了强大的灵活性和封装能力。理解不同类型的内部类以及它们之间的差异对于编写高质量的Java代码至关重要。通过合理使用内部类,开发者可以更好地组织代码逻辑,提高代码的...

    Java(J2SE、J2EE)学习小结

    本文将围绕Java的基础知识、进阶概念以及一些常见面试题进行探讨,帮助读者深入理解Java J2SE(Java标准版)和J2EE(Java企业版)的学习要点。 1. 面向对象思想:面向对象编程(OOP)是Java的核心,它强调通过对象...

Global site tag (gtag.js) - Google Analytics