Vi/Vim
-
简介
Vi是Linux系统自带的命令行文本编辑器,而Vim是从Vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 -
安装环境
sudo apt-get install vim
-
Vim的使用
Vim分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。-
命令模式
一旦启动Vim,首先进入命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
常用的几个命令:
a) i 切换到输入模式,以输入字符。
b) x 删除当前光标所在处的字符。
c) : 切换到底线命令模式,在最底一行输入命令。 -
输入模式
进入输入模式,就可以进行正常的文本编辑。
-
底线命令模式
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。基本的命令有:
a) q 退出程序
b) w 保存文件
-
-
总结
Java
-
简介
Java是一门面向对象的高级程序设计语言,其功能强大且简单易用。 -
安装环境
sudo apt-get install default-jre sudo apt-get install default-jdk
验证
java -version javac -version
-
HelloWorld的编译运行
HelloWorld.java:public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } }
编译运行:
javac HelloWorld.java java HelloWorld
运行结果:
Ant
-
简介
Ant 是一个 Apache 基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。 -
安装环境
sudo apt install ant
验证
ant -version
-
使用
新建文件 build.xml:<?xml version="1.0"?> <project name="helloWorld"> <target name="sayHelloWorld"> <echo message="Hello,Amigo"/> </target> </project>
输入命令行:
ant sayHelloWorld
运行结果:
-
Ant的关键元素
-
project
project 元素是 Ant 构件文件的根元素,Ant 构件文件至少应该包含一个 project 元素,否则会发生错误。在每个 project 元素下,可包含多个 target 元素。a) name 属性
用于指定 project 元素的名称。b) default 属性
用于指定 project 默认执行时所执行的 target 的名称。c) basedir 属性
用于指定基路径的位置。该属性没有指定时,使用 Ant 的构件文件的附目录作为基准目录。举例:
<?xml version="1.0"?> <project name="projectStudy" default="sayBaseDir" basedir=""> <target name="sayBaseDir"> <echo message="The base dir is: ${basedir}"/> </target> </project>
-
target
它为 Ant 的基本执行单元,它可以包含一个或多个具体的任务。多个 target 可以存在相互依赖关系。a) name 属性
指定 target 元素的名称,这个属性在一个 project 元素中是唯一的。我们可以通过指定 target 元素的名称来指定某个 target。b) depends 属性
用于描述 target 之间的依赖关系,若与多个 target 存在依赖关系时,需要以“,”间隔。Ant 会依照 depends 属性中 target 出现的顺序依次执行每个target。被依赖的 target 会先执行。c) if 属性
用于验证指定的属性是否存在,若不存在,所在 target 将不会被执行。d) unless 属性
该属性的功能与 if 属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在 target 将会被执行。e) description 属性
该属性是关于 target 功能的简短描述和说明。举例:
<?xml version="1.0"?> <project name="targetStudy"> <target name="targetA" if="ant.java.version"> <echo message="Java Version: ${ant.java.version}"/> </target> <target name="targetB" depends="targetA" unless="amigo"> <description> a depend example! </description> <echo message="The base dir is: ${basedir}"/> </target> </project>
-
property
该元素可看作参量或者参数的定义,project 的属性可以通过 property 元素来设定,也可在 Ant 之外设定。举例:
<?xml version="1.0"?> <project name="propertyStudy" default="example"> <property name="name" value="amigo"/> <property name="age" value="25"/> <target name="example"> <echo message="name: ${name}, age: ${age}"/> </target> </project>
- 常用任务
在 Ant 工具中每一个任务封装了具体要执行的功能,是 Ant 工具的基本执行单位。
-
copy 任务
该任务主要用来对文件和目录的复制功能。Eg1.复制单个文件:<copy file="file.txt" tofile="copy.txt"/> Eg2.对文件目录进行复制: <copy todir="../newdir/dest_dir"> <fileset dir="src_dir"/> </copy> Eg3. 将文件复制到另外的目录:<copy file="file.txt" todir="../other/dir"/>
-
delete 任务
对文件或目录进行删除。Eg1. 删除某个文件:<delete file="photo/amigo.jpg"/> Eg2. 删除某个目录:<delete dir="photo"/> Eg3. 删除所有的备份目录或空目录: <delete includeEmptyDirs="true"> <fileset dir="." includes="**/*.bak"/> </delete>
-
mkdir 任务
创建目录。eg:<mkdir dir="build"/>
-
move 任务
移动文件或目录。Eg1. 移动单个文件:<move file="fromfile" tofile=”tofile”/> Eg2. 移动单个文件到另一个目录:<move file="fromfile" todir=”movedir”/> Eg3. 移动某个目录到另一个目录: <move todir="newdir"> <fileset dir="olddir"/> </move>
-
echo 任务
该任务的作用是根据日志或监控器的级别输出信息。它包括 message、file、append 和 level 四个属性。eg. <echo message="Hello,Amigo" file="logs/system.log" append="true">
- 利用 Ant 构建和部署 java 工程
Ant 可以代替使用 javac、java 和 jar 等命令来执行 java 操作,从而达到轻松的构建和部署 Java 工程的目的。
-
利用 Ant 的 javac 任务来编译 java 程序
先建立以下目录:|__antstudy |__src |__HelloWorld.java |__build.xml
HelloWorld.java:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello,Amigo"); } }
build.xml
<?xml version="1.0"?> <project name="javacTest" default="compile" basedir=""> <target name="clean"> <delete dir="build"/> </target> <target name="compile" depends="clean"> <mkdir dir="build/classes"/> <javac srcdir="src" destdir="build/classes"/> </target> </project>
运行build.xml:
此时文件目录结构如下:
|__antstudy |__build |__classes |__HelloWorld.class |__src |__HelloWorld.java |__build.xml
-
使用 Ant 的 java 任务运行 Java 程序
修改build.xml:<?xml version="1.0"?> <project name="javaTest" default="jar" basedir="."> <target name="clean"> <delete dir="build"/> </target> <target name="compile" depends="clean"> <mkdir dir="build/classes"/> <javac srcdir="src" destdir="build/classes"/> </target> <target name="run" depends="compile"> <java classname="HelloWorld"> <classpath> <pathelement path="build/classes"/> </classpath> </java> </target> </project>
运行build.xml:
-
使用 Ant 的 jar 任务生成 jar 文件
修改build.xml:<?xml version="1.0"?> <project name="javaTest" default="jar" basedir="."> <target name="clean"> <delete dir="build"/> </target> <target name="compile" depends="clean"> <mkdir dir="build/classes"/> <javac srcdir="src" destdir="build/classes"/> </target> <target name="run" depends="compile"> <java classname="HelloWorld"> <classpath> <pathelement path="build/classes"/> </classpath> </java> </target> <target name="jar" depends="run"> <jar destfile="helloworld.jar" basedir="build/classes"> <manifest> <attribute name="Main-class" value="HelloWorld"/> </manifest> </jar> </target> </project>
运行build.xml:
- 总结
Ant 在自动构建和部署 Java 程序方面方便易用,而且非常灵活,是我们 Java 开发者的绝佳帮手。
Junit
-
简介
JUnit 是一个 Java 语言的单元测试框架,JUnit4 是 JUnit 框架有史以来的最大改进,其主要目标便是利用 Java5 的 Annotation 特性简化测试用例的编写。 -
安装环境
从 Junit 官方下载网站 http://www.junit.org/ 上下载 junit-4.9.zip,把下载到的文件解压缩出来。(路径最好不要有中文字符)。验证
-
元数据
a) @Before:使用了该元数据的方法在每个测试方法执行之前都要执行一次。b) @After:使用了该元数据的方法在每个测试方法执行之后要执行一次。
c) @Test(expected=*.class):expected 属性的值是一个异常的类型,通过它来测试错误。
d) @Test(timeout=xxx):该元数据传入了一个时间(毫秒)给测试方法,如果测试方法在制定的时间之内没有运行完,则测试也失败。
e) @ignore:该元数据标记的测试方法在测试中会被忽略。当测试的方法还没有实现,或者测试的方法已经过时,或者在某种条件下才能测试该方法(比如需要一个数据库联接,而在本地测试的时候,数据库并没有连接),那么使用该标签来标示这个方法。同时,你可以为该标签传递一个 String 的参数,来表明为什么会忽略这个测试方法。比如:@lgnore(―该方法还没有实现‖),在执行的时候,仅会报告该方法没有实现,而不会运行测试方法。
-
测试例子
编写一个类和一个测试类:----HelloWorld.java------ import java.util.*; public class HelloWorld { String str; public void hello() { str = "Hello World!"; } public String getStr() { return str; } }
-----HelloWorldTest.java---------- import static org.junit.Assert.*; import org.junit.Test; public class HelloWorldTest { public HelloWorld helloworld = new HelloWorld(); @Test public void testHello() { helloworld.hello(); assertEquals("Hello World!", helloworld.getStr()); } }
测试:
javac -classpath .:junit-4.9.jar HelloWorldTest.java java -classpath .:junit-4.9.jar -ea org.junit.runner.JUnitCore HelloWorldTest
-
总结
实训给的Junit教程文档中有很多符号错误,比如两个命令中的“-”都写错了,代码中也出现了大小写错误,希望后面的同学注意排坑,免得浪费时间。
总结
通过对Vi/Vim、Java、Ant、Junit的学习,初步掌握了在Linux上编写、编译、运行以及测试Java程序的技能,接下来需要通过实践来巩固这些知识。