1、Java简介+DOS命令+java的编译运行(字节码/机器码、JRE/JVM/JDK/JIT的区别)+一个简单的Java程序

本文主要是介绍1、Java简介+DOS命令+java的编译运行(字节码/机器码、JRE/JVM/JDK/JIT的区别)+一个简单的Java程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:本文属于黑马程序员和javaguide的混合笔记,仅作学习分享使用,建议感兴趣的小伙伴去看黑马原视频或javaguide原文。如有侵权,请联系删除。

Java类型:

  • JavaSE 标准版:以前称为J2SE,主要用来开发桌面应用程序或简单的服务器应用程序。
  • JavaEE 企业版:建立在 Java SE 的基础上,包含了支持企业级应用程序开发和部署的标准和规范(如Servlet、Jsp、JDBC、JPA等),以前称为J2EE。 可以用于构建分布式、可移植、健壮安全的服务端 Java 应用程序,例如 Web 应用程序。
  • JavaME 微型版:以前称为J2ME,主要用于开发嵌入式设备的应用程序

java语言特性:

底层:C++编写

最重要的特性如下:

  • 可移植性(可移植到如Linuxwindows等不同的系统,其中通过JVM,即Java虚拟机实现)
  • 编译与解释并存
  • 面向对象(封装、继承、多态)
  • 安全性(防范运行时堆栈溢出,未经授权读写文件,破坏自己的进程空间之外的内存等)
  • 支持多线程(最开始的C++ 语言没有内置的多线程机制)

其他特性如下(主要是和C++比,毕竟底层是C++编写的,两者都是面向对象的语言):

  • java类内只有单继承,但支持接口之间的多继承。 C++支持多重继承。
  • java无指针。 所以不能用指针直接访问内存,内存更安全。
  • java无操作符重载,只支持方法重载。C++支持操作符和方法重载。
  • java具有可靠性,具备自动内存管理垃圾回收机制(GC),不需要程序员手动释放无用内存。

DOS命令:

window+R+cmd+回车 启动DOS窗口

清屏 cls

复制 选择任意内容 即可复制成功

显示该路径下所有子路径 dir

切换路径 cd(后面如果直接加文件名,则不能是上级路径。如果要访问上级路径,需要输入访问的文件的绝对路径)

相对路径:表示该路径将当前所在的路径作为出发点的路径

如:34519\Pictures>

绝对路径:表示该路径将某个磁盘的盘符下作为出发点的路径

如:C:\Users\34519\Pictures>

返回上级 cd ..

返回根目录 cd \

切换盘符 c:d:

java的编译与运行

一段java代码的编译与运行全流程如下:
在这里插入图片描述

.javajava源文件
.class:可以看作类文件,或者说字节码文件(并不是纯粹的二进制文件)
机器码:机器可理解的代码,纯二进制文件。

那么首先就是.java文件通过javac编译生成多个.class文件,即字节码文件。然后启动JVMJVM启动类加载器ClassLoader。后者去搜索.class文件并将其装载到JVM中。最后转为机器码由操作系统识别并运行。

机器码 vs 字节码

由上述过程可以看到机器码和字节码是不同的东西,可以看成:.class文件 = 字节码 ≠ 机器码

java编译(主要用JDK编译)

JDK(java开发工具包)

JDK是一个功能齐全的 Java 开发工具包,供开发者使用,用于创建和编译 Java 程序。它包含了 JRE,以及编译器 javac 和其他工具,如jdb(调试器)、javap(反编译工具)等。
不同编程语言(JavaGroovyKotlin…)有各自的编译器,如下:
在这里插入图片描述

java解释(主要用JVM解释)

JVM(Java 虚拟机)

是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现(WindowsLinuxmacOS),目的是使用相同的字节码,它们都会给出相同的结果(机器码),这也是 Java 语言**“一次编译,随处运行”**的关键所在。

具体来说是 JVM 启动 类加载器 Class Loader,首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度会相对比较慢。而且,有些方法和代码块是经常需要被调用的(也就是所谓的热点代码),所以后面引进了 JIT(Just in Time Compilation) 编译器,而 JIT 属于运行时编译。当 JIT 编译器完成第一次编译后,其会将字节码对应的机器码保存下来,下次可以直接使用。机器码的运行效率肯定是高于 Java 解释器的。这也解释了我们为什么经常会说 Java 是编译与解释共存的语言

在这里插入图片描述
请注意:JVM 并不是只有一种!只要满足 JVM 规范,每个公司、组织或者个人都可以开发自己的专属 JVM。 也就是说我们平时接触到的 HotSpot VM 仅仅是是 JVM 规范的一种实现而已。

JRE(Java运行环境)

JRE 是运行 .class文件所需的环境,主要包含以下两个部分:JVMJava 基础类库(Class Library

JVM 也就是我们上面提到的 Java 虚拟机。
Java 基础类库:一组标准的类库,提供常用的功能和 API(如 I/O 操作、网络通信、数据结构等)。

JVM vs JDK vs JRE vs JIT

所以,关系最终总结如下:
在这里插入图片描述

在这里插入图片描述

一个简单的Java程序的特点:

每个文件只能包含一个public类(也可以没有),如果有,源文件名与该public类的名字相同。
主类是指包含main方法的类,自身不一定要是public类。

public class HelloWorld {public static void main(String[] args) {System.out.println("Hello, World!");}
}

这篇关于1、Java简介+DOS命令+java的编译运行(字节码/机器码、JRE/JVM/JDK/JIT的区别)+一个简单的Java程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134191

相关文章

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

Java中的JSONObject详解

《Java中的JSONObject详解》:本文主要介绍Java中的JSONObject详解,需要的朋友可以参考下... Java中的jsONObject详解一、引言在Java开发中,处理JSON数据是一种常见的需求。JSONObject是处理JSON对象的一个非常有用的类,它提供了一系列的API来操作J

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

SpringBoot内嵌Tomcat临时目录问题及解决

《SpringBoot内嵌Tomcat临时目录问题及解决》:本文主要介绍SpringBoot内嵌Tomcat临时目录问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录SprinjavascriptgBoot内嵌Tomcat临时目录问题1.背景2.方案3.代码中配置t

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Spring 基于XML配置 bean管理 Bean-IOC的方法

《Spring基于XML配置bean管理Bean-IOC的方法》:本文主要介绍Spring基于XML配置bean管理Bean-IOC的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录一. spring学习的核心内容二. 基于 XML 配置 bean1. 通过类型来获取 bean2. 通过

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin