Java的加载与执行 ——《我的Java打怪日记》

简介: Java的加载与执行

1. Java语言发展史:

  1. Java语言诞生于1995年。
  2. 其实在1995年之前SUN公司(太阳微电子公司:该公司目前被oracle(甲骨文:做数据库的)收购了)为了占领智能电子消费产品市场,派James Gosling领导团队开发了一个oak(橡树)语言。
  3. 1996年:JDK1.0诞生
  4. 什么是JDK? Java开发工具包

    • 做Java开发必须安装的一个工具包,该工具包需要从官网下载。
    • 目前SUN被oracle收购了,所以下载需要去oracle下载。http://www.oracle.com
  5. 目前Java包括三大块:

    • JavasE (Java标准版)
    • JavaEE (Java企业版)
    • JavaME (Java微型版)
  • 其中JavaSE是基础,以后主攻方向是JavaEE方向。

2. Java语言特性【开源、免费、纯面向对象、跨平台】

1. 简单性:

  1. 相对而言的,例如java中不再支持多继承,C++是支持多继承的,多继承比较复杂
  2. C++中有指针,Java中屏蔽了指针的概念。
  3. 所以相对来说Java是简单的。
  4. Java语言底层是c++实现的。不是c语言。

2. 面向对象

  1. Java是纯面向对象的。更符合的人的思维模式。更容易理解。

3. 可移植性

  1. 什么是可移植性?

    • java程序可以做到一次编译,到处运行。
    • 也就是说java程序可以在windows操作系统上运行,
    • 不做任何修改,同样的java程序可以直接放到inux操作系统上运行,这个被称为Java程序的可移植性,或者叫做跨平台。
  2. windows操作系统内核和Linux操作系统的内核肯定不同,它们这两个操作系统执行指令的方式也是不一样的。
  3. 结论:显然java程序不能直接和操作系统打交道。因为java程序只有一份。操作系统执行原理都不同。
  4. SUN的团队他们想了一个办法,他们让java程序运行在一台虚拟的计算机当中,这个虚拟的计算机叫做Java虚拟机,简称JVMJava虚拟机再和底层的操作系统打交道。

在这里插入图片描述

4. 多线程

5. 健壮性:

  1. 和自动垃圾回收机制有关,自动垃圾回收机制简称gc机制。
  2. Java语言运行过程中产生的垃圾是自动回收的,不需要程序员关心。

6. 安全性

3. Java的加载与执行

Java程序的运行包括两个非常重要的阶段

  1. 编译阶段
  2. 运行阶段

1. 编译阶段

  • 编译阶段主要的任务是检查Java源程序是否符合Java语法,符合Java语法则能够生成正常的字节码文件(xxx.class),不符合Java语法规则则无法生成字节码文件
  • 字节码文件中不是纯粹的二进制,这种文件无法在操作系统当中直接执行。
  • 编译阶段的过程:

    1. 程序员需要在硬盘的某个位置<位置随意>新建一个.java扩展名的文件,该文件被称为Java源文件,源文件当中编写的是Java源代码/源程序。而这个源程序是不能随意编写,必须符合Java语法规则<Java语法规则是需要记忆的>
    2. Java程序员需要使用JDK当中自带的javac.exe命令进行Java程序的编译
  • javac怎么用呢?在哪用呢?

    1. javac的使用规则:

javac java源文件的路径

2. 在Dos命令窗口中使用。
javac是一个java编译器工具/命令。
  • 一个java源文件可以编译生成多个.class文件。
  • 字节码文件/class文件是最终要执行的文件,所以说class文件生成之后,java源文件删除并不会影响java程序的执行。但是一般java源程序不要删除,因为class文件最终执行效果可能不是我们想要的,那么这个时候需要回头再重新修改java源程序,然后将java源程序重新编译生成新的class文件,然后再运行这个class程序,生成新的效果。
  • 编译结束之后,可以将class文件拷贝到其他操作系统当中运行。【跨平台】

2. 运行阶段【可以在其它操作系统当中,跨平台】

  • JDK安装之后,除了自带一个javac.exe之外,还有另一个工具/命令,叫做java.exe,

java.exe命令主要负责运行阶段。

  • java.exe在哪里用?怎么用?

    1. 在Dos窗口中使用。
    2. java.exe怎么用呢? java 类名

      • 例如:
      1. 硬盘上有一个A.class,那么就这样用:java A
      2. 硬盘上有一个B.class,那么就这样用: java B
      3. 硬盘上有一个C.class,那么就这样用:java C
    • 千万要注意:不要写成这样: java A.class这种方式是错误的,大家记住就行
  • 运行阶段的过程是:

    1. 打开Dos命令窗口输入: java A
    2. java.exe命令会启动Java虚拟机(JVM), JVM会启动类加载器classLoader
    3. ClassLoader会去硬盘上搜索A.class文件,找到该文件则将该字节码文件装载到JVM当中。
    4. JVMA.class字节码文件解释成二进制1010101010这样数据。
    5. 然后操作系统执行二进制和底层硬件平台进行交互。
目录
相关文章
|
6月前
|
前端开发 Java API
类加载器“如果我定义了一个类名与Java核心类类名相同,那它还能被加载吗?”
类加载器“如果我定义了一个类名与Java核心类类名相同,那它还能被加载吗?”
|
6月前
|
IDE Java 开发工具
java编译通过,运行却提示找不到或无法加载主类的解决方案
java编译通过,运行却提示找不到或无法加载主类的解决方案
585 0
|
11月前
|
缓存 NoSQL Java
Java项目启动时先加载某些方法可用于redis缓存预热
Java项目启动时先加载某些方法可用于redis缓存预热
92 0
|
3月前
|
Java Linux Maven
java依赖冲突解决问题之容器加载依赖jar包如何解决
java依赖冲突解决问题之容器加载依赖jar包如何解决
|
9天前
|
Java Maven Spring
Java Web 应用中,资源文件的位置和加载方式
在Java Web应用中,资源文件如配置文件、静态文件等通常放置在特定目录下,如WEB-INF或classes。通过类加载器或Servlet上下文路径可实现资源的加载与访问。正确管理资源位置与加载方式对应用的稳定性和可维护性至关重要。
|
2月前
|
安全 Oracle Java
edge浏览器加载java插件
edge浏览器加载java插件
|
3月前
|
SQL Java 数据库连接
java连接数据库加载驱动到java项目
该博客文章介绍了如何在Java项目中通过代码加载数据库驱动并连接SQL Server数据库,包括具体的加载驱动和建立数据库连接的步骤,以及如何将驱动包添加到Java项目的构建路径中。
|
3月前
|
Java 测试技术 Spring
Java SpringBoot 加载 yml 配置文件中字典项
Java SpringBoot 加载 yml 配置文件中字典项
44 0
|
5月前
|
Java 编译器
Java健壮性 Java可移植性 JDK, JRE, JVM三者关系 Java的加载与执行原理 javac编译与JAVA_HOME环境变量介绍 Java中的注释与缩进 main方法的args参数
Java健壮性 Java可移植性 JDK, JRE, JVM三者关系 Java的加载与执行原理 javac编译与JAVA_HOME环境变量介绍 Java中的注释与缩进 main方法的args参数
51 1
|
4月前
|
存储 算法 Java
JAVA程序运行问题之Java类加载到JVM中加载类时,实际上加载的是什么如何解决
JAVA程序运行问题之Java类加载到JVM中加载类时,实际上加载的是什么如何解决