首先,需要明确的是Java已经不是一门简单的语言,也不是一门可以速成的语言了,而是一门功能强大,体系复杂的语言,需要花很大精力才能掌握并精通的语言。其次,Java即使在Web开发领域,也不等于仅SSH(Struts+Spring+Hibernate),这三种框架的流行,使多数程序员浮于开发的表面,不能深入进去,同时是Java在Web开发领域被PHP、Python甚至Node.js所超越的原因。最后,Java语言目前功能强大,但是如果要充分利用Java语言,不止是写配置文件简单操作一下数据库,就需要从底层来理解Java的运行机理,正像做C语言的需要理解硬件、操作系统、编译原理、汇编语言之后才能精通C语言,Java语言也一样,你需要理解JVM、ByteCode等底层机制。
本人用Java语言写过十年左右的程序,但是感觉还是属于Hello World层次,因此希望通过这个系列文章,重新学习和掌握Java语言。
这里首先说一下JDK的使用,用Eclipse或Netbeans惯了,绝大多数Java程序员都只会在IDE中进行开发,但是有很多开源项目,一般都是基于命令行编译的,大多采用Ant或Maven,所以要掌握Java语言,必须习惯命令行开发模式。在实际中,绝大多数Java程序员都不能只用JDK写出Hello World!
首先,建立一个项目的目录结构:
proj
bin
src
其中在src中存源码,在bin中保存类文件,在proj目录下进行编译及运行,要求包名为:com.bjcic.learn
首先在src目录下建立目录,com\bjcic\learn,然后在learn目录下新建一个文件TestApp.java,用任意一款编辑器打开,我用的是开源的Notepad++,将文件格式更改为utf-8无BOM格式,因为我们想在任意OS中都能显示中文。
输入如下内容:
package com.bjcic.learn; public class TestApp { public static void main(String[] args) { System.out.println("Hello World"); } }
打开Dos窗口,进入proj目录,输入如下命令(%JAVA_HOME%为你JDK的安装目录):
%JAVA_HOME%\bin\javac -cp . -d bin src\com\bjcic\learn\TestApp.java
这里用到了javac中两个最常用的选项,-cp是在你有类库需要包含时才需要,-d后面跟的路径是编译生成的class文件存放的目录。
然后是运行程序:
%JAVA_HOME%\bin\java -cp bin com.bjcic.learn.TestApp
至此,一个简单的Hello World总算是运行起来了,但是还是有问题的。程序中用System.out.println来输出,因为这个是一行一行进行处理的,没有进行缓冲处理,所以在实际程序中如果习惯这种用法,那么将非常影响性能。那么如果想输入信息,需要采用什么方式呢?答案是采用log4j或JDK自带的logger。
package com.bjcic.learn; import java.util.logging.Logger; import java.util.logging.Level; import java.util.logging.Handler; import java.util.logging.FileHandler; import java.io.IOException; public class TestApp { private static Logger logger = Logger.getLogger(TestApp.class.getName()); private static Handler fh = null; public static void main(String[] args) { System.out.println("Hello World"); try { fh = new FileHandler("mylog.txt"); } catch (IOException ex) { System.exit(0); } logger.addHandler(fh); logger.setLevel(Level.WARNING); logger.log(Level.WARNING, "title", "p=1"); logger.log(Level.FINE, "title1", "p=2"); } }编译运行该程序会在proj目录下生成mylog.txt文件,里边有XML格式的日志内容。
首先下载最新版log4j:http://logging.apache.org/log4j/2.x/ ,将文件解压,在proj目录下新建lib目录,将\log4j-api-2.0-beta3.jar和log4j-core-2.0-beta3.jar拷到该目录下。
在bin目录下编辑log4j2.xml,在文件中输入如下内容:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appenders> <Console name="STDOUT" target="SYSTEM_OUT"> <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/> </Console> </appenders> <loggers> <logger name="org.apache.log4j.xml" level="info"/> <root level="debug"> <appender-ref ref="STDOUT"/> </root> </loggers> </configuration>
%JAVA_HOME%\bin\javac -cp .;lib\log4j-api-2.0-beta3.jar;lib\log4j-core-2.0-beta3.jar -d bin src\com\bjcic\learn\TestApp.java
运行该程序:
%JAVA_HOME%\bin\java -cp bin;lib\log4j-api-2.0-beta3.jar;lib\log4j-core-2.0-beta3.jar com.bjcic.learn.TestApp