仅使用文本编辑器和Java原生工具进行Java开发
仅使用文本编辑器和Java原生工具进行Java开发
本文旨在通过仅使用文本编辑器和Java原生工具,从底层开始探讨Java开发的本质,揭示编码、编译、打包和运行的基本原理。文章将通过三个示例逐步展开,涵盖从简单程序到复杂项目的开发流程。
示例概述
- 简单Hello World:仅包含一个Java文件,位于指定包中。
- 复杂Hello World:包含多个包、外部库调用和配置文件。
- Web工程:使用Servlet实现简单的Web应用。
简单Hello World
编码
创建HelloWorld.java文件,位于com.example.hello包中。
package com.example.hello;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
编译
使用以下命令编译源文件:
javac -encoding UTF-8 --release 11 com/example/hello/HelloWorld.java
运行
运行编译后的class文件:
java com.example.hello.HelloWorld
打包
将生成的class文件打包为jar:
jar cvfe hello-world.jar com.example.hello.HelloWorld com/example/hello/*.class
复杂Hello World
目录结构
project/
├── src/
│ └── com/
│ └── example/
│ ├── config/
│ │ └── app.conf
│ └── util/
│ ├── DateUtil.java
│ └── ConfigUtil.java
└── lib/
└── log4j2.jar
编码
ConfigUtil.java:
package com.example.config;
import java.util.Properties;
public class ConfigUtil {
private static Properties props = new Properties();
public static String getConfig(String key) {
return props.getProperty(key);
}
}
编译
使用以下命令编译代码并包含外部库:
javac -encoding UTF-8 --release 11 -cp lib/log4j2.jar src/com/example/*.java
打包
创建包含所有文件的jar:
jar cvfe complex-world.jar com.example.MainClass -C build .
Web工程
目录结构
webapp/
├── WEB-INF/
│ ├── web.xml
│ └── classes/
│ └── com/
│ └── example/
│ └── MyServlet.class
└── index.html
配置文件
web.xml:
<web-app>
<servlet>
<servlet-name>myServlet</servlet-name>
<servlet-class>com.example.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
打包
将Web应用打包为war:
jar cvf my-webapp.war .
总结
通过这些示例,我们展示了从简单到复杂的Java开发流程。尽管实际项目中会使用更多工具和框架,但理解这些基础流程对开发人员的知识积累至关重要。