|
| 1 | +# Java 编程学习项目 ☕️ |
| 2 | + |
| 3 | + |
| 4 | +这是一个学习 Java 的项目。使用 Eclipse IDE/VIM、Gradle/NPM 构建工具。后期会涉及到 NPM 的使用。主要学习 Java 的基础知识,Java 本地应用程序的编写。 __项目使用 JDK `11.0.12`__ 语言环境。 |
| 5 | + |
| 6 | +在线阅读:[java.xfoss.com](https://java.xfoss.com)。 |
| 7 | + |
| 8 | +本地阅读:[`mdbook` 本地运行](./src/howto_read_locally.md) |
| 9 | + |
| 10 | +--- |
| 11 | + |
| 12 | +## 0. 环境搭建 |
| 13 | + |
| 14 | +本项目是在 Ubuntu Linux 20.04 LTS 上进行的。 |
| 15 | + |
| 16 | + |
| 17 | +- 安装JDK |
| 18 | + |
| 19 | + JDK的当前LTS版是 `JDK 17.0.1`(Oracle, 2021-11),你可以直接从 [Java Downloads | jdk.java.net](https://jdk.java.net/java-se-ri/11) 下载。openjdk-11+28_linux-x64_bin.tar.gz` 压缩包有 178.9M 大小。 |
| 20 | + |
| 21 | + 运行下面的命令,就安装好 OpenJDK 了。 |
| 22 | + |
| 23 | +```bash |
| 24 | +$sudo tar xf /path/to/openjdk-11+28_linux-x64_bin.tar.gz -C /opt/ |
| 25 | +$sudo ln -s /opt/openjdk-11+28 /opt/jdk |
| 26 | +$sudo update-alternatives --install "/usr/bin/java" "java" "/opt/jdk/bin/java" 1 |
| 27 | +$sudo update-alternatives --install "/usr/bin/javac" "javac" "/opt/jdk/bin/javac" 1 |
| 28 | +``` |
| 29 | + |
| 30 | +运行 `$java -version` 与 `$javac -version` 测试 JDK 是否安装妥当。 |
| 31 | + |
| 32 | +- 安装 [Gradle](https://gradle.org/) |
| 33 | + |
| 34 | + 参考 Gradle 官网上使用 [SDKMAN!](http://sdkman.io/) 直接安装即可。 |
| 35 | + |
| 36 | +- 安装Maven |
| 37 | + |
| 38 | + [Apache Maven](http://maven.apache.org/) 可以直接下载,下载到的 `apache-maven-3.8.4-bin.tar.gz`压缩包,大小约 9M,安装步骤与JDK的略有不同: |
| 39 | + |
| 40 | +```bash |
| 41 | +$sudo tar xf /path/to/apache-maven-3.8.4-bin.tar.gz -C /opt/ |
| 42 | +$sudo ln -s /opt/apache-maven-3.8.4 /opt/mvn |
| 43 | +$sudo vim.gtk /etc/profile.d/mvn.sh |
| 44 | +$sudo chmod +x /etc/profile.d/mvn.sh |
| 45 | +``` |
| 46 | + |
| 47 | +其中建立了一个 `/etc/profile.d/mvn.sh` 文件,并修改为了可执行文件。该文件的内容为: |
| 48 | + |
| 49 | +```sh |
| 50 | +export JAVA_HOME=/opt/jdk |
| 51 | +export M2_HOME=/opt/mvn |
| 52 | +export MAVEN_HOME=/opt/mvn |
| 53 | +export PATH=${M2_HOME}/bin:${PATH} |
| 54 | +``` |
| 55 | + |
| 56 | +随后可将国内的华为 MAVEN 代码仓库,设置为MAVEN的默认代码仓库。运行如下命令: |
| 57 | + |
| 58 | +```bash |
| 59 | +$if [ -d $HOME"/.m2" ]; then :; else echo "~/.abc not exist. Now create"; mkdir $HOME"/.m2"; fi |
| 60 | +$wget -qO ~/.m2/settings.xml https://mirrors.huaweicloud.com/api/v1/configurations/maven? |
| 61 | +``` |
| 62 | + |
| 63 | +- 安装NVM |
| 64 | +- 配置 `~/.vimrc` |
| 65 | + |
| 66 | +## 1. 关于文件/目录结构 |
| 67 | + |
| 68 | +在编写 Java 程序时,使用 Maven 构建,必须以这样的 `src/main/java/com/xfoss/learningJava/*.java` 的文件/目录结构,否则会报错: |
| 69 | + |
| 70 | +```bash |
| 71 | +peng@uDesktop:~/eclipse-workspace/learningJava$ java -jar target/com.xfoss.learningJava-0.0.1.jar |
| 72 | +Error: Could not find or load main class com.xfoss.learningJava.PhraseOMatic |
| 73 | +Caused by: java.lang.ClassNotFoundException: com.xfoss.learningJava.PhraseOMatic |
| 74 | +``` |
| 75 | + |
| 76 | +> 同时,`packege com.xfoss.com.learningJava;` 对应的包 `com.xfoss.learningJava` 必须以这个名字命名,这也是上面目录中 `/com/xfoss/learningJava` 的来源。 |
| 77 | +
|
| 78 | +## 2. 使用 `exec-maven-plugin` |
| 79 | + |
| 80 | +使用这个插件,可以开启 `mvn exec:java` 命令,实时运行(正在)编写的 Java 程序。该插件支持两种运行模式,一种是在 Maven 所在线程里运行(需要修改 MAVEN 运行参数 `export MAVEN_OPTS=-Xmx1024m`,以增加JVM虚拟机的运行内存);另一种以独立线程运行(尚需测试)。 |
| 81 | + |
| 82 | +## 3. `build.gradle.kts` 文件中的 kotlin dsl 语法 |
| 83 | + |
| 84 | +Kotlin DSL, 领域特定语言,Domain Specific Language |
| 85 | + |
| 86 | +> 参考: [Kotlin 之美 -- DSL 篇](https://juejin.cn/post/6844903569372479501) |
| 87 | +
|
| 88 | +{{#include ./SUMMARY.md:5:}} |
0 commit comments