当前位置: 首页 > article >正文

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

Java类型:

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

java语言特性:

底层:C++编写

最重要的特性如下:

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

其他特性如下:

  • 类内只有单继承,但支持接口之间的多继承和类与接口之间的实现机制。
  • 分布式。
  • 无指针。
  • 无操作符重载。
  • 无虚基类。

DOS命令:

window+R+cmd+回车

清屏 cls

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

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

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

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

如:34519\Pictures>

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

如:C:\Users\34519\Pictures>

返回上级 cd …

返回根目录 cd \

切换盘符 c: 或 d:

java的编译与运行(JVM vs JDK vs JRE)

一个java源文件通过javac编译生成多个.class文件,即字节码(并不是纯粹的二进制文件)

.class文件可以看作类文件。通过启动JVMJVM启动类加载器ClassLoader。后者去搜索.class文件并将其装载到JVM中。然后转为二进制文件由操作系统识别并运行。

在这里插入图片描述

JVM(Java 虚拟机)

是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现(WindowsLinuxmacOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。如下图所示,不同编程语言(JavaGroovyKotlin…)通过各自的编译器编译成 .class 文件,并最终通过JVM 在不同系统上运行。

在这里插入图片描述

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

JDK(java开发工具包)

JDK是一个功能齐全的 Java 开发工具包,供开发者使用,用于创建和编译 Java 程序。它包含了 JRE,以及编译器 javac 和其他工具,如jdb(调试器)、javap(反编译工具)等。

JRE(java运行环境)

JRE 是运行已编译 Java 程序所需的环境,主要包含以下两个部分:JVM : 也就是我们上面提到的 Java 虚拟机。Java 基础类库(Class Library):一组标准的类库,提供常用的功能和 API(如 I/O 操作、网络通信、数据结构等)。

在 Java 中,JVM 可以理解的代码就叫做字节码(即扩展名为 .class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以, Java 程序运行时相对来说还是高效的(不过,和 C、 C++,Rust,Go 等语言还是有一定差距的),而且,由于字节码并不针对一种特定的机器,因此,Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。Java 程序从源代码到运行的过程如下图所示:

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

在这里插入图片描述
在这里插入图片描述

一个简单的Java程序:

每个文件只能包含一个public类(也可以没有),如果有,源文件名与该public类的名字相同。

主类是指包含main方法的类,自身不一定要是public类。

编译源文件,但运行时是运行主类。


http://www.kler.cn/a/285083.html

相关文章:

  • 从0开始学PHP面向对象内容之(常用魔术方法续一)
  • 【大数据学习 | kafka高级部分】kafka的kraft集群
  • Select,poll,epoll和IO多路复用和NIO
  • 索引【MySQL】
  • 阿里公告:停止 EasyExcel 更新与维护
  • 【后端速成Vue】模拟实现翻译功能
  • Linux 数据结构 树知识
  • shell小白学习记录
  • 如何将线程绑定到特定的CPU核
  • HarmonyOS开发实战( Beta5版)减小应用包大小
  • 【2024】Datawhale X 李宏毅苹果书 AI夏令营 Task2
  • Linux(CentOS 7)
  • element的el-date-picker组件实现只显示年月日时分,不显示秒
  • 2024最新VMware17安装Windows10详细记录
  • SQL进阶技巧:如何查询最近一笔有效订单? | 近距离有效匹配问题
  • 微信小程序 === 组件样式
  • WHAT - 一个 IP 地址与地理信息的关联
  • JAVA中如何自定义注解
  • Docker compose 安装 ELK
  • 【电力电子】单相并网逆变器
  • 在Vue2中使用WebSocket
  • C语言基础(二十一)
  • CSS3换装达人原理
  • 【Datawhale AI夏令营】从零上手CV竞赛Task3
  • 惠中科技PV-Wiper全自动光伏清洁系统,根治污染难题
  • 2024最详细Maven配置教程