1.java简介
Java
是一门
面向对象
编程语言,不仅吸收了
C++
语言的各种优点,还摒弃了C++里难以理解的
多继承
、
指针
等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
Java具有简单性、面向对象、
分布式
、
健壮性
、
安全性
、平台独立与可移植性、
多线程
、动态性等特点 。Java可以编写
桌面应用程序
、
Web应用程序
、
分布式系统
和
嵌入式系统
应用程序等 。
(详细链接:http://baike.baidu.com/item/java/85979?fr=aladdin&fromtitle=Java语言&fromid=4148931)
2.下载并配置java环境变量
2)java环境变量的配置:
http://blog.csdn.net/gray_key/article/details/64264675
3.Linux下的第一个程序
//使用vi编辑器,在linux环境下编写第一个java程序
public class Hello{
public static void main(String agrs[]){
System.out.println("Hello Word!");
}
}
4.javac命令
用法:javac <选项> <源文件>其中,可能的选项包括:
-g 生成所有调试信息
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
-nowarn 不生成任何警告
-verbose 输出有关编译器正在执行的操作的消息
-deprecation 输出使用已过时的 API 的源位置
-classpath <路径> 指定查找用户类文件和注释处理程序的位置
-cp <路径> 指定查找用户类文件和注释处理程序的位置
-sourcepath <路径> 指定查找输入源文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置
-extdirs <目录> 覆盖安装的扩展目录的位置
-endorseddirs <目录> 覆盖签名的标准路径的位置
-proc:{none,only} 控制是否执行注释处理和/或编译。
-processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称;绕过默认的搜索进程
-processorpath <路径> 指定查找注释处理程序的位置
-d <目录> 指定存放生成的类文件的位置
-s <目录> 指定存放生成的源文件的位置
-implicit:{none,class} 指定是否为隐式引用文件生成类文件
-encoding <编码> 指定源文件使用的字符编码
-source <版本> 提供与指定版本的源兼容性
-target <版本> 生成特定 VM 版本的类文件
-version 版本信息
-help 输出标准选项的提要
-Akey[=value] 传递给注释处理程序的选项
-X 输出非标准选项的提要
-J<标志> 直接将 <标志> 传递给运行时系统
5.javac命令常用实例
javac -verbose Test.java 生成详细信息
javac –verbose d:\FirstProgram.java 指定源文件的目录
javac -classpath code code\Test.java
javac –cp code code\Test.java
javac -d e:\ d:\FirstProgram.java 指定class文件输出到一个特定的目录
javac –version 查看编译器的版本
javac –help 查看帮助信息
6.java命令
-classpath 类路径
-cp 类路径 指定一个用于查找类文件的列表,它由目录、 JAR 归档文件和 ZIP 归档文件组成。
类路径项用分号 (;) 分隔。指定 -classpath 或 -cp 将覆盖 CLASSPATH 环境变量的所有设置。
-classpath 或 -cp 与 java 或 javaw 一起使用时用于指定用户类和自举类的类路径。
-classpath 或 -cp 与 oldjava 或 oldjavaw 一起使用时仅用于指定用户类的类路径。
如果不使用 -classpath 和 -cp,且没有设定 CLASSPATH ,则用户类路径由当前目录 (.) 构成。
-D属性=值 设置系统属性的值。
-jar 执行封装在 JAR 归档文件中的程序。第一个参数是 JAR 归档文件的名称而不是启动类名.启动类由 Main-Class 清单头指定。
JAR 文件是所有用户类的源,其它的用户类路径设置将被忽略。
-verbose
-verbose:class 显示每个所加载的类的信息。
-verbose:gc 报告每个垃圾收集事件。
verbose:jni 报告有关本地方法的使用和其它 Java 平台相关代码接口活动的信息。
-version 显示版本信息并退出。
-?
-help 显示用法信息并退出。
-X 显示非标准选项的有关信息并退出。
7.java命令常用实例
Java FirstProgram 执行当前目录下的java文件
java -classpath d:\ FirstProgram 执行指定类目录下的文件
Java –verbose -classpath d:\ FirstProgram 查看加载及执行的详细信息
Java –verbose -classpath d:\ FirstProgram >d:\view.txt 输出到指定的文件
Java –version 查看版本
java com.mashen.FirstProgram 执行带包名的java文件
java -jar c:/temp/bin/test.jar 执行jar包
java -classpath .;log4j-api-2.4.jar;log4j-core-2.4.jar;./src TestLog
java -classpath .;log4j-api-2.4.jar;log4j-core-2.4.jar;./src TestLog 执行对jar包有依赖关系的文件
8.jar命令jar命令格式:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ...其中{ctxu}这四个参数必须选选其一。[v f m e 0 M i ]是可选参数,文件名也是必须的。选项: -c 创建一个jar包 -t 显示jar中的内容列表 -x 解压jar包 -u 添加文件到jar包中 -f 指定jar包的文件名 -v 生成详细的报造,并输出至标准设备 -m 指定manifest.mf文件.(manifest.mf文件中可以对jar包及其中的内容作一些一设置) -0 产生jar包时不对其中的内容进行压缩处理 -M 不产生所有文件的清单文件(Manifest.mf)。这个参数与忽略掉-m参数的设置 -i 为指定的jar文件创建索引文件 -C 表示转到相应的目录下执行jar命令,相当于cd到那个目录,然后不带-C执行jar命令
9.一般属性1) Manifest-Version 用来定义manifest文件的版本,例如:Manifest-Version: 1.02) Created-By 声明该文件的生成者,一般该属性是由jar命令行工具生成的, 例如:Created-By: Apache Ant 1.5.13) Signature-Version 定义jar文件的签名版本4. Class-Path 应用程序或者类装载器使用该值来构建内部的类搜索路径
10.应用程序的相关属性Main-Class定义jar文件的入口类,该类必须是一个可执行的类,一旦定义了该属性即可通过 java -jar x.jar来运行该jar文件
11.综合实例[root@localhost zengbiao]# vi One.java vi编辑.java文件public class One{public static void main(String agrs[]){System.out.println("This is One.");}}[root@localhost zengbiao]# vi Two.javapublic class Two{public static void main(String agrs[]){System.out.println("This is Two.");}}[root@localhost zengbiao]# javac One.java javac编译.java文件[root@localhost zengbiao]# javac Two.java[root@localhost zengbiao]# java OneThis is One.[root@localhost zengbiao]# java Two java运行.class文件This is Two.[root@localhost zengbiao]# lltotal 16-rw-r--r--. 1 root root 412 Mar 24 07:15 One.class-rw-r--r--. 1 root root 102 Mar 24 07:15 One.java-rw-r--r--. 1 root root 412 Mar 24 07:16 Two.class-rw-r--r--. 1 root root 102 Mar 24 07:16 Two.java[root@localhost zengbiao]# jar -cvf dada.jar One.class Two.class-cvf 创建一个jar包的同时将两个.class文件放进去[root@localhost zengbiao]# jar -tvf dada.jar-tvf 查看jar包里面的内容0 Fri Mar 24 07:20:44 CST 2017 META-INF/68 Fri Mar 24 07:20:44 CST 2017 META-INF/MANIFEST.MF创建jar包的时候默认生成一个META-INF文件夹及里面的MANIFEST.MF文件该.MF文件主要包含jar包的相关信息(属性),如:Manifest-Version,Created-By,Signature-Version,Class-Path。若是不想生成META-INF文件夹及里面的MANIFEST.MF文件,则在创建jar包时,在-cvf参数选项中加多一个大写M,即将-cvf改成-cvfM。412 Fri Mar 24 07:15:26 CST 2017 One.class412 Fri Mar 24 07:16:58 CST 2017 Two.class[root@localhost zengbiao]# java -cp dada.jar One -cp进入jar包中,运行.class文件This is One.[root@localhost zengbiao]# java -cp dada.jar TwoThis is Two.[root@localhost zengbiao]# jar -uvfe dada.jar One-uvfe更新jar包,-u是更新的意思,-e参数是为了指定jar包中的主类,此代码中指定主类为One.updated manifest[root@localhost zengbiao]# java -jar dada.jar-jar 由于指定了jar包中的主类,java运行jar包时直接运行主类的.class文件。而且,想要直接运行jar包,必须有指定的主类才行,若没指定主类,则运行报错。This is One.[root@localhost zengbiao]# jar -uvfe dada.jar Two 将jar包的主类改为Twoupdated manifest[root@localhost zengbiao]# java -jar dada.jarThis is Two.[root@localhost zengbiao]# lltotal 24-rw-r--r--. 1 root root 1143 Mar 24 07:28 dada.jar-rw-r--r--. 1 root root 743 Mar 24 07:18 hehe.jar-rw-r--r--. 1 root root 412 Mar 24 07:15 One.class-rw-r--r--. 1 root root 102 Mar 24 07:15 One.java-rw-r--r--. 1 root root 412 Mar 24 07:16 Two.class-rw-r--r--. 1 root root 102 Mar 24 07:16 Two.java[root@localhost zengbiao]# rm One.class Two.classrm: remove regular file `One.class'? yrm: remove regular file `Two.class'? y[root@localhost zengbiao]# lltotal 16-rw-r--r--. 1 root root 1143 Mar 24 07:28 dada.jar-rw-r--r--. 1 root root 743 Mar 24 07:18 hehe.jar-rw-r--r--. 1 root root 102 Mar 24 07:15 One.java-rw-r--r--. 1 root root 102 Mar 24 07:16 Two.java[root@localhost zengbiao]# jar -xvf dada.jar -xvf 将jar包进行解压缩。created: META-INF/inflated: META-INF/MANIFEST.MFinflated: One.classinflated: Two.class[root@localhost zengbiao]# lltotal 28-rw-r--r--. 1 root root 1143 Mar 24 07:28 dada.jar-rw-r--r--. 1 root root 743 Mar 24 07:18 hehe.jardrwxr-xr-x. 2 root root 4096 Mar 24 07:20 META-INF-rw-r--r--. 1 root root 412 Mar 24 07:15 One.class-rw-r--r--. 1 root root 102 Mar 24 07:15 One.java-rw-r--r--. 1 root root 412 Mar 24 07:16 Two.class-rw-r--r--. 1 root root 102 Mar 24 07:16 Two.java[root@localhost zengbiao]# rm hehe.jar dada.jar 删除.jar文件rm: remove regular file `hehe.jar'? yrm: remove regular file `dada.jar'? y[root@localhost zengbiao]# lltotal 20drwxr-xr-x. 2 root root 4096 Mar 24 07:20 META-INF-rw-r--r--. 1 root root 412 Mar 24 07:15 One.class-rw-r--r--. 1 root root 102 Mar 24 07:15 One.java-rw-r--r--. 1 root root 412 Mar 24 07:16 Two.class-rw-r--r--. 1 root root 102 Mar 24 07:16 Two.java[root@localhost zengbiao]#
[root@localhost zengbiao]# lltotal 12drwxr-xr-x. 3 root root 4096 Mar 24 07:40 aa-rw-r--r--. 1 root root 102 Mar 24 07:15 One.java-rw-r--r--. 1 root root 102 Mar 24 07:16 Two.java[root@localhost zengbiao]# vi One.javapackage aa.bb; package 将类进行打包,aa/bb是打包的路径。public class One{public static void main(String agrs[]){System.out.println("This is One.");}}[root@localhost zengbiao]# vi Two.javapackage aa.bb;public class Two{public static void main(String agrs[]){System.out.println("This is Two.");}}[root@localhost zengbiao]# javac One.java 由于.java文件重新编辑过,所以需重新编译[root@localhost zengbiao]# javac Two.java[root@localhost zengbiao]# mkdir aa 创建一个aa文件夹[root@localhost zengbiao]# cd aa[root@localhost aa]# mkdir bb 在aa文件夹下再创建一个bb文件夹[root@localhost aa]# cd ../[root@localhost zengbiao]# mv One.class aa/bb 将One.class文件移动到bb文件夹中[root@localhost zengbiao]# mv Two.class aa/bb[root@localhost zengbiao]# cd aa/bb[root@localhost bb]# lltotal 8-rw-r--r--. 1 root root 418 Mar 24 08:08 One.class-rw-r--r--. 1 root root 418 Mar 24 08:09 Two.class[root@localhost bb]# cd ../../[root@localhost zengbiao]# jar -cvf hehe.jar aa 新建个jar包,并把aa文件夹放进去added manifestadding: aa/(in = 0) (out= 0)(stored 0%)adding: aa/bb/(in = 0) (out= 0)(stored 0%)adding: aa/bb/Two.class(in = 418) (out= 288)(deflated 31%)adding: aa/bb/One.class(in = 418) (out= 287)(deflated 31%)[root@localhost zengbiao]# lsaa hehe.jar One.java Two.java[root@localhost zengbiao]# jar -uvfe hehe.jar aa/bb/One 指定jar包的主类updated manifest[root@localhost zengbiao]# java -jar hehe.jar 直接运行jar包的主类This is One.[root@localhost zengbiao]# jar -uvfe hehe.jar aa/bb/Twoupdated manifest[root@localhost zengbiao]# java -jar hehe.jarThis is Two.[root@localhost zengbiao]# lltotal 16drwxr-xr-x. 3 root root 4096 Mar 24 08:09 aa-rw-r--r--. 1 root root 1353 Mar 24 08:14 hehe.jar-rw-r--r--. 1 root root 117 Mar 24 07:57 One.java-rw-r--r--. 1 root root 117 Mar 24 07:58 Two.java[root@localhost zengbiao]# rm -r aarm: descend into directory `aa'? yrm: descend into directory `aa/bb'? yrm: remove regular file `aa/bb/Two.class'? yrm: remove regular file `aa/bb/One.class'? yrm: remove directory `aa/bb'? yrm: remove directory `aa'? y[root@localhost zengbiao]# lshehe.jar One.java Two.java[root@localhost zengbiao]# java -cp hehe.jar aa/bb/One-cp 此处通过绝对路径运行jar包中的类This is One.[root@localhost zengbiao]# java -cp hehe.jar aa/bb/TwoThis is Two.[root@localhost zengbiao]#小结javac -verbose 文件名.java 编译并显示详细信息java -verbose 文件名 运行并显示详细信息