1.多个对象协作提供服务,多个服务构成组件.
2.java.* 是j2se的标准库,是java标准的一部分,是对外承诺的java开发的接口,通常要保持向后兼容,一般不会轻易修改。所有的jdk的实现(其他厂家的,在java.*上都是一样的)
com.sun.*和org.omg.* 一般是sun的hotspot虚拟机中java.*和javax.*的实现类。但因为包含在rt中,所以我们也可以调用。但因为不是sun对外公开承诺的接口,所以根据根据实现的需要随时增减,因此在不同版本的hotspot中可能是不同的,而且在其他的jdk实现中是没有的,调用这些类,会损失掉一些一致性和向后兼容性。
3. java的动态性 Java 语言是一种具有动态性的解释型编程语言,当指定程序运行的时候, Java 虚拟机就将编译生成的 . class 文件按照需求和一定的规则加载进内存,并组织成为一个完整的 Java 应用程序。 Java 语言把每个单独的类 Class 和接口 Implements 编译成单独的一个 . class 文件,这些文件对于 Java 运行环境来说就是一个个可以动态加载的单元。正是因为 Java 的这种特性,我们可以在不重新编译其它代码的情况下,只编译需要修改的单元,并把修改文件编译后的 . class 文件放到 Java 的路径当中,等到下次该 Java 虚拟机器重新激活时,这个逻辑上的 Java 应用程序就会因为加载了新修改的 .class 文件,自己的功能也做了更新,这就是 Java 的动态性。
当 在dos下运行java -jar somejar的时候发生的事情
运行java.exe的main函数
加载jvm.dll jvm.dll中提供几个功能函数用于完jar包的搜索与加载,引导类加载器完成这项工作。
Java 运行环境为了优化系统,提高程序的执行速度,在 JRE 运行的开始会将 Java 运行所需要的基本类采用预先加载( pre-loading )的方法全部加载要内存当中,因为这些单元在 Java 程序运行的过程当中经常要使用的,主要包括 JRE 的 rt.jar 文件里面所有的 .class 文件。
当 java.exe 虚拟机开始运行以后,它会找到安装在机器上的 JRE 环境,然后把控制权交给 JRE , JRE 的类加载器会将 lib 目录下的 rt.jar 基础类别文件库加载进内存,这些文件是 Java 程序执行所必须的,所以系统在开始就将这些文件加载,避免以后的多次 IO 操作,从而提高程序执行效率。
http://www.blogjava.net/William/archive/2006/08/25/65804.html