[TOC]
1. java程序运行过程
- 程序员编写的java源代码,经过编译后生成与平台无关的.class字节码文件
-
JVM负责执行编译后的.class字节码文件,JVM实现了java跨平台的特性
image
2. 主要概念
- JRE: Java运行时环境(Java Runtime Environment)
-
JVM: Java虚拟机(Java Virtual Machine)
- 负责执行字节码文件,为编译器提供相同的编程接口
-
JDK: Java标准版开发包(Java SE Development Kit)
- 一套用于开发Java程序的开发包,提供编译、运行Java程序的各种工具和资源
- Java的三个版本:
- Java SE: 整个Java技术的核心和基础
- Java ME: 主要用于控制移动设备和信息家电等有限存储的设备
- Java EE: 提供了企业应用的完整解决方案
3. 安装JDK
3.1 JDK下载
访问ORACLE官方网站下载JDK,目前最新版为JDK10
image
根据自己使用的操作系统,下载相应的JDK包即可。
3.2 Windows下安装JDK
下载Windows系统的JDK安装文件后,直接执行选择自己的安装路径默认安装即可。这里安装路径选为: D:\Programs\work\JDK10
,这里安装路径一般不应该包含中文字符及空格,容易出一些奇怪的问题。
安装完成后需要配置环境变量:
- 右键我的电脑->属性->高级系统设置->环境变量
- 新建
JAVA_HOME
的环境变量,变量值设置为JDK的安装路径D:\Programs\work\JDK10
- 编辑系统
PATH
环境变量,追加变量%JAVA_HOMT%\bin
- 新建
- 打开Windows cmd命令行,输入
java -version
及echo %JAVA_HOME%
检查JDK安装及环境变量设置情况,如图所示
image
3.3 Linux下安装JDK
mkdir /usr/local/jdk10; cd /usr/local/jdk10
# 上传下载的jdk-10.0.2_linux-x64_bin.tar.gz文件到当前目录
tar -zxvf jdk-10.0.2_linux-x64_bin.tar.gz
rm jdk-10.0.2_linux-x64_bin.tar.gz
mv jdk-10.0.2/* ./
rmdir jdk-10.0.2
# 新建jdk10用户,并设置环境变量
useradd jdk10
cd ~jdk10; vim .bash_profile
#.bash_profile文件中追加两行
export JAVA_HOME=/usr/local/JDK10
export PATH=$JAVA_HOME/bin:$PATH
su - jdk10
java -version #检查JDK安装情况
3.4 JDK各目录详解
- bin: 存放了JDK的各种工具命令,如javac、java等命令
- conf: 存放了JDK的相关配置文件
- include: 存放一些平台特定的头文件
- jmods: 存放了JDK的各种模块
- legal: 包含JDK各模块的授权文档
- lib: JDK工具的一些补充jar包等
4. 编译并运行java程序
4.1 编写HelloWold程序
// D:\windows库\桌面\temp\javaStudy\HelloWorld.java
public class HelloWorld{
public static void main(String[] args){
System.out.println("Hello World!");
}
}
4.2 编译java HelloWorld程序
cd /d D:\windows库\桌面\temp\javaStudy
javac -d . HelloWorld.java
4.2.1 javac命令的基本用法
-
javac <options> <source files>
- -d <directory>指定类文件的生成路径
- -g 生成所有调试信息
- --release 7 指定使用java7的语法进行编译
4.3 运行java HelloWorld程序
cd /d D:\windows库\桌面\temp\javaStudy
java HelloWorld
4.3.1 java命令的基本用法
- 执行类:
java [options] <主类> [args...]
- -cp或-classpath 目录和 zip/jar 文件的类搜索路径, 若没有配置-cp参数,java默认会在当前目录搜索类,若配置了-cp参数,java 只会在指定的路径下搜索需执行的类。
- 执行jar包:
java [options] -jar <jar 文件> [args...]
4.3.2 包含外部类依赖java程序的执行
需特别注意:
- 编译主类前需先编译依赖java程序为类
- 编译主类时需添加依赖类包所在路径添加到classpath
- 运行主类时需添加依赖类包及主类所在路径添加到classpath
手动编译并运行含依赖类java程序示例:
文件1: D:\windows库\桌面\temp\javaStudy\depend\DependHello.java
package work.lody;
public class DependHello{
public void depend(){
System.out.println("work.lody.DependHello: goooooooooood");
}
}
文件2: D:\windows库\桌面\temp\javaStudy\DependTest.java
import work.lody.DependHello;
public class DependTest{
public static void main(String[] args){
System.out.println("sill in DependTest..");
DependHello dh = new DependHello();
dh.depend();
}
}
针对这两个java源文件,手动编译执行过程如下:
cd /d D:\windows库\桌面\temp\javaStudy\depend
javac -d . DependHello.java
cd ..
javac -cp D:\windows库\桌面\temp\javaStudy\depend -d . DependTest.java
java -cp D:\windows库\桌面\temp\javaStudy\depend;. DependTest
5. java程序打包发布方式
5.1 jar,war,ear
java程序一般打包成jar(java archive file)后进行发布,jar文件有以下特点:
- 格式与zip压缩包格式完全相同
- 包含名为META-INF/MANIFEST.MF的清单文件
- 添加jar文件到CLASSPATH环境中后,java虚拟机会在内存中解压这个jar包,并将当成一个路径进行处理。即java可运行或导入jar包里的类。
另外,java web项目一般打包成war(web archive fiel)包,企业应用项目一般打包成ear(enterprise archive file)包。war包、ear包格式及约定与jar完全相同。
5.2 清单文件MANIFEST.MF
清单文件由创建jar包时的系统自动创建,其格式为:
key:<空格>value
清单文件有以下几点要求:
- 每行定义一个key-value对,key前不能有空格
- key后必须为英文
:
+一个空格 - 文件开头不能存在空行
- 文件必须以空行作为结束
特别的包含key为Main-Class,且value为类的的jar包为可执行jar包。可直接通过java -jar test.jar [args]
执行jar包。
若需要执行不带Main-Class的jar包,可通过java命令将jar添加到CLASSPATH路径,并指定主类执行:
java -cp test.jar test.Test [args]
5.3 jar常用命令简介
- 将dist路径下全部内容生成一个jar:
jar cf test.jar -C dist/ .
- 将test目录下所有内容生成一个可执行jar:
jar cvfe test.jar test.Test test
- 查看jar包内容:
jar tf test.jar
- 将jar解压缩到当前目录:
jar xf test.jar
- 更新jar文件:
jar uf test.jar Hello.class
网友评论