# java概述
## 什么是程序
程序是由一系列指令或代码组成的计算机软件。程序可以被计算机执行,以完成特定的任务或实现某些功能。在编写一个程序时,我们需要按照特定语言的语法规则,编写正确的代码,以便让计算机能够理解和执行。程序可以包括各种类型的任务和操作,如算术运算、逻辑运算、文件读写、图形界面设定等,具体取决于程序的设计目的和使用场景。
## java的诞生
java是由sun microsystems(现在是oracle corporation的一部分)的james gosling和他的团队发明的编程语言。该语言最初被设计为可嵌入家电和其他嵌入式设备中的简单而强大的工具。
1991年,gosling开始思考如何使用c++构建一个更好的环境,在这个过程中他开发了一种新的语言,被称为"oak"。但oak最终没有被用于家电上,因为家电市场失去了动力。
后来,去掉了之前oak中的一些限制,并且做出了兼容网络架构的改进,这种语言发展成为java。它于1995年正式发布,并被认为是第一种真正意义上的跨平台编程语言。
java以其内置的跨平台兼容性、优秀的内存管理和安全性成为了一个广泛应用的编程语言。java 还拥有一个巨大的社区和庞大的生态系统,涵盖许多不同领域和用例,包括大型企业系统和移动应用程序。
-[其他版本](https://www.oracle.com/cn/java/technologies/downloads/archive/)
## java特点
java是一种跨平台、面向对象的编程语言。
- 跨平台性(platform independence):java代码可以在不同操作系统平台上运行,因为java程序在编译时被转换成字节码(bytecode),这些字节码可以在任何支持java虚拟机(jvm)的平台上运行。
- 面向对象(object oriented):java是一种面向对象的语言,强调封装、继承和多态等概念,使得java程序更易于开发、维护和扩展,并具有更高的重用性。
- 简单性(simplicity):java设计时考虑了程序员使用的便捷性和可读性,削减了很多复杂和难以掌握的特性,使得java程序员能够更加专注于解决业务问题而不是语言本身的实现细节。
- 安全性(security):java提供了安全保护机制,在执行java程序时将对可能引起安全漏洞的代码进行限制和控制,防止恶意代码的攻击和破坏。
- 高性能(high performance):java程序的性能相对于其他解释性语言较高,并且有针对不同环境的高效优化方法。具体而言,java的性能受到了虚拟机(jvm)的影响。
- 多线程(multithreading):java提供了多线程支持,使得程序可以同时进行多个任务处理,提高程序的并发性和响应能力。
- 开放性(openness):java是一种开放的语言,具有很强的可扩展性和可维护性,尤其在企业级应用中更为常见。
## java运行机制及运行过程
java程序的运行可以分为编译和解释两个阶段:
1. 编译阶段
java源代码通过javac.exe编译器被编译成byte code字节码文件(后缀为.class),该文件不依赖具体的操作系统或cpu架构,因此同一个byte code文件可以在任何平台上执行。
2. 解释阶段
由java虚拟机(jvm)进行解释执行。jvm是真正的跨平台的关键所在:它建立了一种“中间层”来隔离java应用程序与底层操作系统之间的差异,并提供标准的接口。这在一定程度上保证了java应用程序的可靠性和稳定性,同时也使java成为开发web应用程序和跨平台应用程序的首选语言之一。
简单来说,当我们在本地计算机上运行java程序时,会先通过java编译器将源代码转换成字节码文件。然后,jvm解释执行字节码文件,并将程序输出打印到控制
### java核心机制(JVM)
java核心机制(jvm)是java平台的重要组成部分,它负责将java代码编译成在计算机上可执行的字节码,并在运行时加载和执行这些字节码。以下是 jvm 的几个关键方面:
- 类加载器:jvm 中的类加载器负责将字节码从磁盘加载到内存中,并创建一个 java 类的定义。它们还为已经存在于系统中的类提供了一种通用接口,以便程序能够动态添加新的类。
- 字节码执行引擎:java 字节码是可以移植的、高度优化的代码形式,但是它却不能直接运行在计算机 cpu 上。字节码执行引擎解释和运行 java 字节码。通过遵循 java 语言规范和 jvm 规范来执行 java 字节码。
- **回收器**回收机制使得 java 可以自动地管理内存。当对象不再被程序所引用时,**回收器会立即清除此对象并回收其分配的内存资源。**回收器消除了由内存泄漏和非法内存访问造成的许多常见问题。
- 即时(jit)编译器:jvm 中的 jit 编译器是一个可选的组件。jit 编译器将字节码转换为本地机器代码,在执行时大幅提高程序的性能。
由于 jvm 的存在,java 被赋予了许多特性,如可移植性、自动收集和网络安全。jvm 还允许在一台计算机上运行多个 java 应用程序,这是很多企业级系统中的重要因素。
## 什么是JDK,JRE
### JDK基本介绍
java开发工具包(java development kit),它是面向java开发者的完整编译环境,包含了java运行环境(jre)、java编译器(javac)、java工具(javadoc, jarsigner)等一系列开发者使用的组件。
### JRE基本介绍
java运行环境(java runtime environment),它提供了java类库、java虚拟机(jvm)和其他必要的组件,可以帮助java应用程序在计算机上运行。jre不包含java编译器,因此无法进行java代码的编译。
### JDK、JRE、JVM包含关系
简单来说,jdk包含了jre,而且还包含开发者需要的一系列工具。如果只是想要运行已经编译好的java程序,则只需要安装jre即可;如果想要自己开发java程序,则需要安装jdk。
## 安装JDK
以MAC系统为例安装JDK的步骤:
- 打开终端(Terminal)应用程序
- 确认已连接到Internet。
- 输入以下命令并按回车键下载JDK安装程序:
```
$ curl -LO https://corretto.aws/downloads/latest/amazon-corretto-8-x64-macos-jdk.tar.gz
```
- 下载完成后,解压缩压缩文件。可以在任意目录中进行此操作,但建议选择其中一个系统级别目录,例如/Library/Java/JavaVirtualMachines。 输入以下命令来解压缩文件:
```
$ tar xvf amazon-corretto-*-macos-jdk.tar.gz
```
- 安装完成后,请添加以下内容开头的行以设置JAVA_HOME环境变量,其中/your_install_location表示您选择的安装位置:
```
$ vi ~/.bash_profile
export JAVA_HOME=/your_install_location/Contents/Home
#使用 "pwd" 命令确定路径时,在提示符下输入 "/your_install_location/Contents/Home"。
export PATH=$JAVA_HOME/bin:$PATH
source ~/.bash_profile
```
- 现在可以打开终端并输入以下命令来验证JDK安装是否正确:
```
$ java -version
```
- 将显示安装版本的输出安装成功。
## 配置环境变量
### 为什么需要环境变量
环境变量是操作系统(如windows、linux、macos等)中存储配置信息的一种机制。通过环境变量,我们可以在程序或者脚本中引用这些配置信息,而不需要直接将这些硬编码在代码中。
使用环境变量的优点包括:
1. 简化配置:通过设置环境变量,我们可以把不同应用程序之间的配置统一起来。
2. 提高安全性:敏感的配置信息(例如密码)可以存在环境变量中,而不必明文写在代码中,从而提高了安全性。
3. 方便部署和维护:在不同的开发、测试和生产环境中,我们只需要改变对应的环境变量即可,无需�