Java历史
Sun公司生产,后被Oracle收购;
Java基本概念
- JDK: Java开发工具包(Java Development Kit),包含了开发Java应用程序所需的工具和环境。 JDK包含了Java运行环境(JRE)以及很多开发工具,比如:javac编译器、jdb调试器等, 还有打包Java程序的jar工具。
- JRE: Java运行环境(Java Runtime Environment),提供了 Java 程序运行所必需的环境,包括 Java 虚拟机和 Java 核心类库。
- JVM: Java虚拟机(Java Virtual Machine),是 Java 程序的运行核心,负责加载字节码文件, 并将字节码解释或编译成机器码,在不同的操作系统上提供统一的运行环境,使得 Java 程序能够实现 “一次编写,到处运行” 的特性,也就是Java的跨平台性。
总之,JDK包含JRE,JRE包含JVM
下载
下载地址:https://www.oracle.com/cn/java/technologies/downloads/#jdk23-windows
安装
Windows配置环境变量
1、在环境变量增加JAVA_HOME
,指向解压的JDK解压包;
2、在path增加%JAVA_HOME%\bin
;
打开控制台,检测版本
java -version
java version "23.0.1" 2024-10-15
Java(TM) SE Runtime Environment (build 23.0.1+11-39)
Java HotSpot(TM) 64-Bit Server VM (build 23.0.1+11-39, mixed mode, sharing)
扩展:为什么要配置到环境变量?
- 全局可执行:许多软件在安装后,需要将其可执行文件所在的目录添加到环境变量中, 这样在系统的任何位置都可以直接输入程序名称来运行该程序,而无需输入完整的路径。 例如,在安装了 Java 开发工具包(JDK)后,将 JDK 的 bin 目录添加到环境变量PATH中, 就可以在命令行的任何位置使用java、javac等命令来运行 Java 程序和编译 Java 代码。
- 共享资源:一些库文件或配置文件可能被多个程序共享使用。通过配置环境变量, 可以让不同的程序都能方便地找到这些共享资源,避免每个程序都单独配置资源路径的麻烦。 比如:Java约定俗称使用JAVA_HOME设置环境变量,统一命名, 因为有些程序比如Maven、IDEA默认使用这个字符串调用JAVA;
Hello World
- 编写java文件
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World, Hello Java!");
}
}
- javac命令进行编译为class文件 命令行输入命令
javac HelloWorld.java
执行命令后,该目录下生成.class
文件。 3. java命令运行class文件
java HelloWorld
注意是不带.class
后缀;运行后,输出内容;
运行过程总结:
首先由编译器将Java源代码文件(.java文件,简称Java源文件)编译成为字节码文件(.class文件), 然后再由Java虚拟机中的解释器将字节码解释成为机器码去执行。
扩展: 编译型语言:先编译后解释; 解释型语言:比如Python是不编译,直接解释。
Java语言特点
- 简单 比C++简单,因为Java设计风格类似于C++,但Java摒弃了C++中容易引发程序错误的地方, 如:指针、内存管理、多继承等;
- 面向对象 Java是彻底的、纯粹的面向对象语言,在Java中一切都是对象。Java具有面向对象的三个基本特性: 封装、继承、多态;
封装:实现了模块化和信息隐藏; 继承:实现了代码的复用; 多态:单继承,去掉了多继承等复杂的概念;
扩展:面向对象&面向过程
- 面向过程: 采用自顶向下的设计方法,从问题的整体开始,逐步分解为更小的子问题, 直到每个子问题都可以用一个简单的函数或过程来解决。 面向过程编程风格恰恰符合人的这种流程化思维方式。 比如:C语言
- 面向对象: 是一种自底向上的思考方式。 它不是先去执行流程来分解任务,而是将任务翻译成一个一个的小的模块(类),设计类之间的交互, 最后按照流程将类组装起来,完成整个任务。 比如:Java语言、C++语言、Python语言
结构中立 Java编译器编译成与机器结构(CPU和操作系统)无关的字节码,任何种类的计算机,只要可以运行jvm, 就可以在该计算机上运行。 也就是说是跨平台性;
可移植性 因为可跨平台,所以移植性好。
健壮
- 强类型语言,在编译时进行代码检查,使很多错误可以在编译器被发现,不至于在运行时发生错误。
- 摒弃C++中的指针操作,指针强大但复杂,操作不好,容易导致内存分配问题。
- 自动垃圾回收机制,减少内存错误的发生。
安全
- 字节码校验器会检查代码中是否有非法操作,可以防止木马病毒。
- jvm采用沙箱运行模式,即把java代码和数据都限制在一定内存空间里执行,不允许程序访问该内存空间外的内存。
扩展:在计算机领域中,沙箱技术(Sandboxing)是一种用于隔离正在运行程序的安全机制,其目的是限制不可信进程或不可信代码运行时的访问权限。 沙箱的名称来源于儿童所玩的沙盒游戏,在沙盒中,孩子们可以自由运用想象力搭建一个与外界隔绝的小世界,正如沙箱会为待执行的程序提供了一个虚拟环境。 这个虚拟环境中包含一些虚拟的硬件和软件资源,如文件系统、网络、操作系统等,使应用程序或进程可以在该环境中运行。 在沙箱中运行的程序只能访问沙箱给它加载的资源,而不会影响到外部的应用、系统或平台,避免其对计算机中的其他程序或数据造成永久的更改。 沙箱应用在网络安全领域,可以通过隔离沙箱中的病毒文件,以达到识别未知攻击的效果。
... ...
特点比较多,多有重复的,整体优势就是安全、健壮、灵活