Java 8的ClassLoader流程:
bootstrap classloader加载rt.jar,jre/lib/endorsed
ext classloader加载jre/lib/ext
application classloader加载-cp指定的类
java9及之后的classloader流程:
bootstrap classloader加载lib/modules
ext classloader更名为platform classloader,加载lib/modules
application classloader加载-cp,-mp指定的类
同时,我们注意到,JDK9开始,AppClassLoader他爹不再是 URLClassLoader,一般热部署,插件部署,都会使用到AppClassLoader,例如Spring-Boot的热部署
Java编程模型面向对象编程(OOP )
面向切面编程(AOP)面向元信息编程(MDOP )
面向函数编程(FOP )面向模块编程(MOP )
Java中的常见类加载器
// BootstrapCLassLoader -----------6.纯C++实现的类加载器,没有对应的Java类,主要加载jre/lib/目录下的核心库// ExtClassLoader -------4.类的全名是sun.misc.Launcher$ExtClassLoader,主要加载jre/lib/ext/目录下的扩展包// AppCLassLoader -------2.sun.misc.Launcher$AppClassLoader , 主要加载CLASSPATH路径下的包
Java 8的ClassLoader流程:
bootstrap classloader加载rt.jar,jre/lib/endorsed
ext classloader加载jre/lib/ext
application classloader加载-cp指定的类
// Java 8的ClassLoader流程:// bootstrap classloader加载rt.jar,jre/lib/endorsed// ext classloader加载jre/lib/ext// application classloader加载-cp指定的类private static void printJdk1_8() throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException { // BootstrapCLassLoader -----------6.纯C++实现的类加载器,没有对应的Java类,主要加载jre/lib/目录下的核心库 // ExtClassLoader -------4.类的全名是sun.misc.Launcher$ExtClassLoader,主要加载jre/lib/ext/目录下的扩展包 // AppCLassLoader -------2.sun.misc.Launcher$AppClassLoader , 主要加载CLASSPATH路径下的包 //1.获取Main的类加载器 Class
JAVA 获取系统配置信息重点内容
System.out.println(“java版本号:” + System.getProperty(“java.version”)); // java版本号System.out.println(“Java提供商名称:” + System.getProperty(“java.vendor”)); // Java提供商名称System.out.println(“Java提供商网站:” + System.getProperty(“java.vendor.url”)); // Java提供商网站System.out.println(“jre目录:” + System.getProperty(“java.home”)); // Java,哦,应该是jre目录System.out.println(“Java虚拟机规范版本号:” + System.getProperty(“java.vm.specification.version”)); // Java虚拟机规范版本号System.out.println(“Java虚拟机规范提供商:” + System.getProperty(“java.vm.specification.vendor”)); // Java虚拟机规范提供商System.out.println(“Java虚拟机规范名称:” + System.getProperty(“java.vm.specification.name”)); // Java虚拟机规范名称System.out.println(“Java虚拟机版本号:” + System.getProperty(“java.vm.version”)); // Java虚拟机版本号System.out.println(“Java虚拟机提供商:” + System.getProperty(“java.vm.vendor”)); // Java虚拟机提供商System.out.println(“Java虚拟机名称:” + System.getProperty(“java.vm.name”)); // Java虚拟机名称System.out.println(“Java规范版本号:” + System.getProperty(“java.specification.version”)); // Java规范版本号System.out.println(“Java规范提供商:” + System.getProperty(“java.specification.vendor”)); // Java规范提供商System.out.println(“Java规范名称:” + System.getProperty(“java.specification.name”)); // Java规范名称System.out.println(“Java类版本号:” + System.getProperty(“java.class.version”)); // Java类版本号System.out.println(“Java类路径:” + System.getProperty(“java.class.path”)); // Java类路径System.out.println(“Java lib路径:” + System.getProperty(“java.library.path”)); // Java lib路径System.out.println(“Java输入输出临时路径:” + System.getProperty(“java.io.tmpdir”)); // Java输入输出临时路径System.out.println(“Java编译器:” + System.getProperty(“java.compiler”)); // Java编译器System.out.println(“Java执行路径:” + System.getProperty(“java.ext.dirs”)); // Java执行路径System.out.println(“操作系统名称:” + System.getProperty(“os.name”)); // 操作系统名称System.out.println(“操作系统的架构:” + System.getProperty(“os.arch”)); // 操作系统的架构System.out.println(“操作系统版本号:” + System.getProperty(“os.version”)); // 操作系统版本号System.out.println(“文件分隔符:” + System.getProperty(“file.separator”)); // 文件分隔符System.out.println(“路径分隔符:” + System.getProperty(“path.separator”)); // 路径分隔符System.out.println(“直线分隔符:” + System.getProperty(“line.separator”)); // 直线分隔符System.out.println(“操作系统用户名:” + System.getProperty(“user.name”)); // 用户名System.out.println(“操作系统用户的主目录:” + System.getProperty(“user.home”)); // 用户的主目录System.out.println(“当前程序所在目录:” + System.getProperty(“user.dir”)); // 当前程序所在目录