{"id":20894561,"url":"https://github.com/gnu4cn/learningjava","last_synced_at":"2026-06-03T19:31:44.500Z","repository":{"id":43029720,"uuid":"431042936","full_name":"gnu4cn/learningJava","owner":"gnu4cn","description":"Repo for learning Java Language.","archived":false,"fork":false,"pushed_at":"2026-05-22T22:23:37.000Z","size":43122,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-23T00:23:34.216Z","etag":null,"topics":["head-first","java","programming"],"latest_commit_sha":null,"homepage":"https://java.xfoss.com","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gnu4cn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-11-23T09:45:41.000Z","updated_at":"2026-05-22T22:23:41.000Z","dependencies_parsed_at":"2025-01-17T02:35:23.371Z","dependency_job_id":null,"html_url":"https://github.com/gnu4cn/learningJava","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gnu4cn/learningJava","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnu4cn%2FlearningJava","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnu4cn%2FlearningJava/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnu4cn%2FlearningJava/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnu4cn%2FlearningJava/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gnu4cn","download_url":"https://codeload.github.com/gnu4cn/learningJava/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gnu4cn%2FlearningJava/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33876893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-03T02:00:06.370Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["head-first","java","programming"],"created_at":"2024-11-18T10:20:08.309Z","updated_at":"2026-06-03T19:31:44.495Z","avatar_url":"https://github.com/gnu4cn.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Java 编程学习项目 ☕️\n\n\n这是一个学习 Java 的项目。使用 Eclipse IDE/VIM、Gradle/NPM 构建工具。后期会涉及到 NPM 的使用。主要学习 Java 的基础知识，Java 本地应用程序的编写。 __项目使用 JDK `11.0.12`__ 语言环境。\n\n在线阅读：[java.xfoss.com](https://java.xfoss.com)。\n\n本地阅读：[`mdbook` 本地运行](./src/howto_read_locally.md)\n\n---\n\n## 0. 环境搭建\n\n本项目是在 Ubuntu Linux 20.04 LTS 上进行的。\n\n\n- 安装JDK\n\n    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 大小。\n\n    运行下面的命令，就安装好 OpenJDK 了。\n\n```bash\n$sudo tar xf /path/to/openjdk-11+28_linux-x64_bin.tar.gz -C /opt/\n$sudo ln -s /opt/openjdk-11+28 /opt/jdk\n$sudo update-alternatives --install \"/usr/bin/java\" \"java\" \"/opt/jdk/bin/java\" 1\n$sudo update-alternatives --install \"/usr/bin/javac\" \"javac\" \"/opt/jdk/bin/javac\" 1\n```\n\n运行 `$java -version` 与 `$javac -version` 测试 JDK 是否安装妥当。\n\n- 安装 [Gradle](https://gradle.org/)\n\n    参考 Gradle 官网上使用 [SDKMAN!](http://sdkman.io/) 直接安装即可。\n\n- 安装Maven\n\n    [Apache Maven](http://maven.apache.org/) 可以直接下载，下载到的 `apache-maven-3.8.4-bin.tar.gz`压缩包，大小约 9M，安装步骤与JDK的略有不同：\n\n```bash\n$sudo tar xf /path/to/apache-maven-3.8.4-bin.tar.gz -C /opt/\n$sudo ln -s /opt/apache-maven-3.8.4 /opt/mvn\n$sudo vim.gtk /etc/profile.d/mvn.sh\n$sudo chmod +x /etc/profile.d/mvn.sh\n```\n\n其中建立了一个 `/etc/profile.d/mvn.sh` 文件，并修改为了可执行文件。该文件的内容为：\n\n```sh\nexport JAVA_HOME=/opt/jdk\nexport M2_HOME=/opt/mvn\nexport MAVEN_HOME=/opt/mvn\nexport PATH=${M2_HOME}/bin:${PATH}\n```\n\n随后可将国内的华为 MAVEN 代码仓库，设置为MAVEN的默认代码仓库。运行如下命令：\n\n```bash\n$if [ -d $HOME\"/.m2\" ]; then :; else echo \"~/.abc not exist. Now create\"; mkdir $HOME\"/.m2\"; fi\n$wget -qO ~/.m2/settings.xml https://mirrors.huaweicloud.com/api/v1/configurations/maven?\n```\n\n- 安装NVM\n- 配置 `~/.vimrc`\n\n## 1. 关于文件/目录结构\n\n在编写 Java 程序时，使用 Maven 构建，必须以这样的 `src/main/java/com/xfoss/learningJava/*.java` 的文件/目录结构，否则会报错：\n\n```bash\npeng@uDesktop:~/eclipse-workspace/learningJava$ java -jar target/com.xfoss.learningJava-0.0.1.jar\nError: Could not find or load main class com.xfoss.learningJava.PhraseOMatic\nCaused by: java.lang.ClassNotFoundException: com.xfoss.learningJava.PhraseOMatic\n```\n\n\u003e 同时，`packege com.xfoss.com.learningJava;` 对应的包 `com.xfoss.learningJava` 必须以这个名字命名，这也是上面目录中 `/com/xfoss/learningJava` 的来源。\n\n## 2. 使用 `exec-maven-plugin`\n\n使用这个插件，可以开启 `mvn exec:java` 命令，实时运行（正在）编写的 Java 程序。该插件支持两种运行模式，一种是在 Maven 所在线程里运行（需要修改 MAVEN 运行参数 `export MAVEN_OPTS=-Xmx1024m`，以增加JVM虚拟机的运行内存）；另一种以独立线程运行（尚需测试）。\n\n## 3. `build.gradle.kts` 文件中的 kotlin dsl 语法\n\nKotlin DSL, 领域特定语言，Domain Specific Language\n\n\u003e 参考： [Kotlin 之美 -- DSL 篇](https://juejin.cn/post/6844903569372479501)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnu4cn%2Flearningjava","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgnu4cn%2Flearningjava","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgnu4cn%2Flearningjava/lists"}