import
路径:需要的java类,要么拷到当前目录,要么拷到CLASSPATH
中设置的目录。
import只能用于当前工程的子目录
文件后缀
.java
表示java源码文件
.class
表示字节码,它直接运行在JVM
上
.jar
:压缩包,包含了META-INF和.class
文件、各种资源文件等。jar包内不包含main,则是库文件+需要的资源;包含main则是可执行文件+需要的资源。
.war
:
# 运行jar工程
java -jar test.jar
# 链接jar包
java -classpath some.jar -jar test.jar
#编译成字节码
javac demo.java
#把字节码转化为机器码并运行
java demo
运行环境
java代码通过jdk中的编译工具(javac)编译后形成java字节码(.class的文件),然后通过jvm编译解释执行,最终变成机器可以看懂的机器码。
- JRE是java运行环境,包含了java虚拟机,java基础类库。
- JDK是java开发工具包,是提供给程序员使用的。JDK包含了JRE,编译java源码的编译器javac,java程序调试和分析的工具,java程序编写所需的文档和demo例子程序。
- 如果需要运行java程序,只需安装JRE。如果需要编写java程序,需要安装JDK。
工程
maven/gradle
maven——pom.xml
maven目录下conf中有一个setting.xml文件,通过它来指定下载仓库。
settings.xml
是maven的配置文件,里面<mirrors></mirrors>
配置了仓库地址。
<mirrors>
<!-- maven官方镜像 -->
<mirror>
<id>mirrorId</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name </name>
<url>http://repo1.maven.org/maven2/</url>
</mirror>
<!-- 阿里云镜像 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://central.maven.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- 阿里云镜像 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- junit镜像地址 -->
<mirror>
<id>junit</id>
<name>junit Address/</name>
<url>http://jcenter.bintray.com/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
修改本地仓库路径,windows下一般默认路径为C:\Users\zz\.m2\repository)
,在<setting></setting>
之间加入下列代码自定义路径:
<localRepository>D:/application/jdk/repository</localRepository>
下载jar包
- 新建一个自己的目录,在这个目录下新建文件pom.xml。其中depenencies配置节部分就是我们要下载的依赖包。
- 在当前文件夹下,输入命令:
mvn -f pom.xml dependency:copy-dependencies
- 然后所有跟这个类库相关的直接和间接依赖的jar包都会下载到
./target/dependency/
下 。
更新或删除jar包
先修改pom.xml
中的dependency依赖,然后在pom.xml
文件夹执行maven-update
,就会自动更新或者删除依赖包。
库
JavaSE
:通常是指Java Standard Edition,Java标准版,javaSE是java的标准库。JavaSE以前称为J2SE。
JavaEE
:Java Enterprise Edition,Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和 Web 2.0 应用程序。
JavaME
:Java Platform,Micro Edition,这个版本以前称为J2ME。
JavaWeb
:用java开发web应用,一般指的是用java开发后台。vue/jsp+springboot属于javaweb。
java包命名规范
官方包
以 java.* 开头的是Java的核心包,所有程序都会使用这些包中的类;
以 javax.* 开头的是扩展包,x 是 extension 的意思,也就是扩展。虽然 javax.* 是对 java.* 的优化和扩展,但是由于 javax.* 使用的越来越多,很多程序都依赖于 javax.,所以 javax. 也是核心的一部分了,也随JDK一起发布。
以 org.* 开头的是各个机构或组织发布的包,因为这些组织很有影响力,它们的代码质量很高,所以也将它们开发的部分常用的类随JDK一起发布。
第三方包
以自己域名的倒写形式作为开头来为自己开发的包命名,例如百度发布的包会以 com.baidu.* 开头,w3c组织发布的包会以 org.w3c.* 开头。
打包
单文件打包
1)先使用javac编译java文件,得到class文件
2) 新建文件,名字任起,比如可以叫manifest,内容如下
Manifest-Version: 1.0
Main-Class: addJarPkg
3) 把编译好的class文件和第2步新建的文件放入指定文件夹,如test
4) 在cmd中运行命令
# 把test目录下的所有文件打包为main.jar
# 把manifest中的信息打包到META-INF/MANIFEST.MF中
jar -cvfm main.jar manifest -C test .
注意路径问题,其中-C
后面指定要打包的目录, 目录后面的 . 代表目录下所有文件
Idea
idea可以通过设置maven选项,他会自动下载pom.xml中的依赖包。
pom.xml
//项目基本信息
<groupId>org.example</groupId>
<artifactId>web</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>web Maven Webapp</name>
//指定依赖库
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
//指定源码文件根目录
<build>
<!--默认源代码目录 -->
<sourceDirectory>src</sourceDirectory>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
<!--默认测试源代码目录 -->
<testSourceDirectory>test </testrcDirectory>
<testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
</build>
// 指定资源文件
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
// 指定测试资源目录
<build>
<testResources>
<testResource>
<directory>test</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</testResource>
</testResources>
</build>
//指定插件
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
</plugins>
</pluginManagement>
<build>
插件学习
加载资源的插件
maven-compiler-plugin用来编译Java代码,maven-resources-plugin则用来处理资源文件。
默认的主资源文件目录是src/main/resources,很多用户会需要添加额外的资源文件目录,这个时候就可以通过配置maven-resources-plugin来实现。在pom代码块中,resources标签是指定读取的配置文件或文件夹中的文件,这里其实是maven-resources-plugin来处理的,当然你也可以不使用resources标签来实现读取配置文件,通过plugin内部的<execution>
也可以达到这个目的
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>copy-xmls</id>
<phase>process-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/java</directory> # 指定目录
<includes>
<include>**/*.xml</include> # 加载所有的xml文件。
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
加载源码的插件
Maven默认只允许指定一个主Java代码目录和一个测试Java代码目录。
虽然这其实是个应当尽量遵守的约定,但偶尔你还是会希望能够指定多个源码目录(例如为了应对遗留项目),build-helper-maven-plugin的add-source目标就是服务于这个目的,通常它被绑定到默认生命周期的generate-sources阶段以添加额外的源码目录。
需要强调的是,这种做法还是不推荐的,因为它破坏了 Maven的约定,而且可能会遇到其他严格遵守约定的插件工具无法正确识别额外的源码目录。