一、Java名字由来
Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名
二、Java的特性
1.跨平台性/可移植性(核心优势)
所谓的跨平台性,就是Java语言编写的程序,一次编译后,可以在多个系统平台上运行
Java之所以可以跨平台,是因为我们的程序是运行在虚拟机(JVM)上的,而与操作系统无关,只要你的电脑装有Java虚拟机,那么任何人所写的Java程序都可以在你的电脑上运行
2.安全性(官方解释)
Java SE 平台基于一个动态、可扩展、基于标准、可互操作的安全架构。加密、身份验证和授权、公共密钥基础架构等安全特性是内置的。Java
安全模型基于一个可定制的“沙盒”,Java 软件程序可在其中安全运行,对系统或用户无潜在风险,Java 安全性技术包括大量
API、工具以及常用安全算法、机制和协议的实现。Java 安全 API
涉及领域广泛,包括加密、公共密钥基础架构、安全通信、身份验证和访问控制。Java
安全性技术为开发人员编写应用提供了一个全面的安全框架,同时为用户或管理员安全管理应用提供了一组工具
3.面向对象
面向对象是一种程序设计技术(万物皆对象)
4.简单性
相较于C/C++来说,java真的算是超级简单了
5.高性能
客观上说,越高级的语言性能越不尽人意,Java最开始相较于C/C++性能差很多,随着Java性能的不断优化,Java已经拥有在某些代码上和C/C++相同的效率
6.分布式
将一个大的系统划分为多个业务模块,业务模块分别部署到不同的机器上,各个业务模块之间通过接口进行数据交互。区别分布式的方式是根据不同机器不同业务
7.多线程
一个微信进程可以同时进行文字聊天和视频聊天就是多线程
8.健壮性
吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(指针,内存的申请和释放等),遇到出乎意料的错误时,我们也可以通过抛出异常的方式防止程序崩溃
三、HomeBrew(mac OS 强推)
MacOs M1安装Homebrew 在国内最简单方法(转载)
在未来的开发中,我们需要配置各种各样的环境、各种各样的包。HomeBrew只需要简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径的情况
终端输入
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
四、Java环境配置
- 搜索Java
brew search java
- 安装Java
brew install java
HomeBrew不仅可以下载安装各种各样的包,而且可以下载客户端软件
- -cask即可安装客户端软件
例如(安装微信):brew install --cask wechat
五、Java到底是解释性还是编译型语言?
Java是解释型和编译型共存的语言
1、编译型
说白了,当进行一次编译(需要花费大量时间)后,之后无论执行多少次都无需编译(今天编译了一次,明天和后天就可以直接用)
- 解释型
对于源程序并不事先编译,而是直接解释成机器能识别的代码并执行,很显然没有事先编译的话,那么运行一次程序都需要解释一次,需要耗费大量的时间(只要运行每次都需要花费时间去解释)
六、开发工具(Intellij-Idea)
brew install --cask intellij-idea
七、快速入门
HelloWorld
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
运行机制
- 编译
javac HelloWorld.java
当我们进行编译时,会产生一个.class类型的字节码文件
- 运行
java HelloWorld
JDK、JRE、JVM的区别
JDK:开发工具包。它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行环境JRE,以及常用的Java基础类库等,是整个JAVA的核心(包括JRE和JVM)
JRE:运行基于Java语言编写的程序所不可缺少的运行环境,用于解释执行Java的字节码文件(包括JVM和类库)
- JVM识别字节码文件
- 运行时所需要的类库
JVM:是Java的虚拟机,是JRE的一部分,跨平台的核心。负责解释执行字节码文件
个人理解:
- 对于一个普通用户,只需要Java的运行环境(JRE)就可以运行Java程序
- 对于程序开发者来说,需要安装JDK来编译、调试程序
- 很显然JVM是JRE的一部分,没有JVM就不可能运行java程序
执行流程分析
通过javac将源文件编译成字节码文件,然后通过java运行字节码文件
- javac HelloWorld.java(编译需要带上源文件的后缀名)
- 每当修改源文件代码时都需要重新编译产生新的字节码文件
- JVM的作用就是识别字节码文件