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类。

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

相关推荐
百事老饼干10 分钟前
Java[面试题]-真实面试
java·开发语言·面试
customer0818 分钟前
【开源免费】基于SpringBoot+Vue.JS医院管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·开源·intellij-idea
2402_8575893628 分钟前
SpringBoot框架:作业管理技术新解
java·spring boot·后端
HBryce2432 分钟前
缓存-基础概念
java·缓存
一只爱打拳的程序猿1 小时前
【Spring】更加简单的将对象存入Spring中并使用
java·后端·spring
杨荧1 小时前
【JAVA毕业设计】基于Vue和SpringBoot的服装商城系统学科竞赛管理系统
java·开发语言·vue.js·spring boot·spring cloud·java-ee·kafka
minDuck1 小时前
ruoyi-vue集成tianai-captcha验证码
java·前端·vue.js
白子寰1 小时前
【C++打怪之路Lv14】- “多态“篇
开发语言·c++
王俊山IT1 小时前
C++学习笔记----10、模块、头文件及各种主题(一)---- 模块(5)
开发语言·c++·笔记·学习