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

相关文章

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Spring MVC如何设置响应

《SpringMVC如何设置响应》本文介绍了如何在Spring框架中设置响应,并通过不同的注解返回静态页面、HTML片段和JSON数据,此外,还讲解了如何设置响应的状态码和Header... 目录1. 返回静态页面1.1 Spring 默认扫描路径1.2 @RestController2. 返回 html2