Java
- 一、Java发展
- 下载路径
- JDK和JRE的区别
- 历史由来
- 二、编译过程
- Java 基本原理
- 三、安装JDK
- 设置系统默认Java版本
- 设置JAVA_HOME环境变量
- 三、CMD设置
- CMD快捷方式
- CMD命令窗口的编码格式
- 四、端口操作
一、Java发展
下载路径
JDK下载路径:(推荐下载JDK8u202)
https://repo.huaweicloud.com/java/jdk/
OpenJDK下载:
清华:https://mirrors.tuna.tsinghua.edu.cn/Adoptium/
华为:https://mirrors.huaweicloud.com/openjdk/
Oracle:https://jdk.java.net/archive/
redhat:https://developers.redhat.com/products/openjdk/download
JDK和JRE的区别
JRE是java运行时环境,而JDK是java开发工具包,较新的JDK包已经不含JRE,但是JRE可以独立安装。
JDK:java development kit (java开发工具),JDK 是用于开发 Java 程序的最小环境。
JRE:java runtime environment (java运行时环境),是提供给 Java 程序运行的最小环境。
JRE包含了java虚拟机、java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。JDK是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。运行java程序只需安装JRE。如果需要编写java程序,需要安装JDK。
历史由来
JDK8在JDK8u202之后商业用途就开始收费了。个人能正常使用,但是不能给第三方使用,不能向第三方分发,且按照用户数量收费等等,建议最好不要升级新的商业版本。
OpenJDK是JDK的开放原始码版本,OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的“开源”是通常意义上的源码开放形式,即源码是可被复用的。
把这些JRL许可证形式的Sun/OracleJDK源码和对应版本的OpenJDK源码进行比较,发现除了文件头的版权注释之外,其余代码基本上都是相同的,只有字体渲染部分存在一点差异,Oracle JDK采用了商业实现,而OpenJDK使用的是开源的FreeType。当然,“相同”是建立在两者共有的组件基础上的,Oracle JDK中还会存在一些Open JDK没有的、商用闭源的功能.
HotSpot是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机。虚拟机在最初并非由Sun公司开发,而是由一家名为“Longview Technologies”的小公司设计的; 甚至这个虚拟机最初并非是为Java语言而开发的,它来源于Strongtalk VM, 而这款虚拟机中相当多的技术又是来源于一款支持Self语言实现“达到C语言50%以上的执行效率”的目标而设计的虚拟机, Sun公司注意到了这款虚拟机在JIT编译上有许多优秀的理念和实际效果,在1997年收购了Longview Technologies公司,从而获得了HotSpot VM。
SUN的JDK版本从1.3.1开始运用HotSpot虚拟机, 2006年底开源,主要使用C++实现,JNI接口部分用C实现。HotSpot是较新的Java虚拟机,用来代替JIT(Just in Time),可以大大提高Java运行的性能。提高性能的原理:Java原先是把源代码编译为字节码在虚拟机执行,这样执行速度较慢。而HotSpot将常用的部分代码编译为本地(原生,native)代码,这样显着提高了性能。
二、编译过程
1、javac 编译
Java源代码通过编译器(javac)编译为字节码文件(.class)。
idea中的 build 和 maven package等指令都可以编译为 .class
2、类加载器(Class Loader)
类加载器负责将类的字节码文件加载到内存中,以便在运行时创建类的实例。
3、解释器(Interpreter)
解释器是一种直接解释执行 Java 字节码的编译器。它逐行读取字节码并立即执行相应的机器指令。解释器的优点是它可以快速启动,并且不需要等待整个程序被编译完毕,因为它可以边编译边执行代码。
4、即时编译器(JIT Compiler)
JIT 编译器是另一种编译器,它会在运行时将整个方法的字节码编译成本地机器码。这样做的好处是执行本地机器码通常比执行字节码更快速,因为它更接近底层硬件,并且可以进行更多的优化。
Java 基本原理
Example.java的Java源代码文件中包含一个名为Example的类。通过以下步骤来描述的过程:
使用javac编译器将Example.java编译为字节码文件Example.class。
当程序运行时,类加载器将加载Example.class文件到内存中。
JVM的字节码解释器将解释执行Example.class中的字节码(或者通过即时编译器进行编译)。
最终将执行结果输出或者进行相应的操作。
三、安装JDK
3.1 windows安装JDK和JRE
3.2 Ubuntua安装JDK和JRE
常用的JDK主要包括OpenJDK 和 Oracle JDK ,它们之前几乎没有区别,功能几乎相同,主要区别在于Open JDK是一个开源项目,而Oracle JDK 需要付费许可证或只允许商业性使用软件
3.2.1 安装OpenJDK
sudo apt install openjdk-17-jdk
如果想安装其他版本,替换上述命令中的版本号,例如 openjdk-11-jdk。
3.2.2 安装OracleJDK
进入Oracle 网站下载页面:https://www.oracle.com/java/technologies/downloads/archive/
选择需要下载版本后,复制下载地址。
使用wget 命令进行下载,打开终端,在终端中输入wget 然后后面跟下载地址即可。
wget https://download.oracle.com/java/22/archive/jdk-22_linux-x64_bin.deb
下载后,执行如下安装命令
sudo apt install ./jdk-21.0.1_linux-x64_bin.deb
另外,卸载Java如下命令:
sudo apt remove openjdk-17-jdk
设置系统默认Java版本
如果Ubuntu系统上安装了多个Java版本,可以通过如下命令更改默认版本。
sudo update-alternatives --config java
验证证JAVA_HOME环境变量是否设置正确
echo $JAVA_HOME
设置JAVA_HOME环境变量
找到首选Java安装的路径后,打开/etc/environment文件
sudo gedit /etc/environment
假设您想将JAVA_HOME设置为指向OpenJDK 17,请在文件末尾添加以下行:
JAVA_HOME=“/usr/lib/jvm/java-17-openjdk-amd64”
使更改对当前会话生效
#/etc/environment是系统范围的配置文件,由所有用户使用。
source /etc/environment
三、CMD设置
CMD快捷方式
按下 Win + R
组合键,然后键入regedit
并按下Enter 键
导航到注册表路径:HKEY_CLASSES_ROOT\Directory\Background\shell
1、右键单击 “shell”,选择 “新建” -> “项”,将项命名为您希望在右键菜单中显示的名称"open cmd"
2、右键单击新创建的项"open cmd",选择 “新建” -> “项”,将项命名为 “command”。
3、在 “command” 项上,双击默认值,并在 “数值数据” 字段中输入 cmd.exe
,如果打开CMD窗口时,并希望自动定位到当前目录cmd.exe /s /k pushd "%V"
。
4、右键单击 “open cmd”,选择 “新建”->“字符串值”,将数据名称命名为“Icon”,输入cmd的图标位置(这里可以使用原来的exe路径)。
同样可以设置Cygwin的路径:D:\Win10_Programs\develop\cygwin\Cygwin\bin\mintty.exe
CMD命令窗口的编码格式
常见CMD编码格式
UTF-8 的代码为 65001
美国英语 的代码为 437
GBK 的代码为 936(一般情况下为默认编码)
永久设置为utf-8
(1)进入注册表编辑器:window + R,输入regedit。
(2)找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
(3)右键单击 “Command Processor”,选择 “新建”->“字符串值”,将数据名称命名为autorun
,输入数值数据CHCP 65001
。
四、端口操作
1)执行 netstat -ano|findstr 端口号
,查到进程ID
2)根据进程Pid执行tasklist|findstr 进程号
,查到进程名称
3)杀死进程,执行 taskkill /f /im 进程名称 /t