写点什么

珠联壁合地设天造|M1 Mac os(Apple Silicon) 基于 vscode(arm64) 配置搭建 Java 开发环境 (集成 web 框架 Springboot)

发布于: 2021 年 05 月 20 日
珠联壁合地设天造|M1 Mac os(Apple Silicon)基于vscode(arm64)配置搭建Java开发环境(集成web框架Springboot)

原文转载自「刘悦的技术博客」https://v3u.cn/a_id_194


也许有人从未听说过 Python,但是不会有人没听说过 Java,它作为一个拥有悠久历史的老牌编程语言,常年雄踞 TIOBE 编程语言榜首,其顶尖的霸主地位不可撼动,而 M1 mac 业已发布了一段时间,作为跨时代的顶级芯片系统,这两大巨头能否珠联璧合,让开发者们猛虎添翼、更上层楼?本次我们尝试在 M1 mac 系统中搭建 Java 开发环境,并且集成目前 Web 开发领域红的发紫的 Springboot 框架,另外,谁说玩儿 Java 就必须得用 Eclipse 或者 IntelliJ IDEA?我们就骄傲地使用 Vscode。


首先需要应对的是 OpenJDK 的选择,这里推荐使用 Azul 公司提供的 zulu 版本,Zulu 又是什么? 它是 Azul 提供商业支持的 OpenJDK 商业发行版,与 Oracle JDK 有高度的一致性,而最重要的一点是,它支持 arm64 架构,这正是 M1 mac 运行 Java 项目的先决条件,下载地址:https://www.azul.com/downloads/?version=java-11-lts&os=macos&architecture=arm-64-bit&package=jdk ,这里我们选择了 LTS(长期维护)版本的 jdk11,注意一定要选择 Arm64 版本的。



下载成功后,双击安装即可,安装成功后,zulu 会把 jdk 放在下面这个路径里:


/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
复制代码


如果愿意,可以配置一下环境变量,这样方便以后操作多版本 jdk:


vim ~/.zshrc
复制代码


添加:


export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
复制代码


存盘退出,重启终端,输入


java -version
复制代码


返回:


openjdk version "11.0.11" 2021-04-20 LTS  OpenJDK Runtime Environment Zulu11.48+21-CA (build 11.0.11+9-LTS)  OpenJDK 64-Bit Server VM Zulu11.48+21-CA (build 11.0.11+9-LTS, mixed mode)  (base) ➜  ~ 
复制代码


表示 arm64 版本的 JDK 安装成功。


接着来安装 Maven,它是专门为 Java 项目打造的管理和构建工具,它能帮我们快速编译,测试,打包,发布 Java 项目,非常方便。


一般情况下,可以去 Maven 官网下载二进制文件,这里推荐一个更简单的方案,就是使用 Homebrew,注意这里一定要使用 arm64 架构的,安装命令如下:


/bin/bash -c "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install.sh)"
复制代码


基于 arm64 的 Homebrew 统一安装在系统的/opt/homebrew 目录,主要是为了和老版的 x86 区别开。


安装成功后,输入命令:


brew -v
复制代码


将会返回版本号:


(base) ➜  ~ brew -v        Homebrew 3.0.2  Homebrew/homebrew-core (git revision ae4118; last commit 2021-02-28)  Homebrew/homebrew-cask (git revision 9510a9; last commit 2021-05-20)
复制代码


代表安装成功。


之后使用 brew 命令来安装 Maven:


brew install maven
复制代码


就是这么简单,安装成功后,无需单独配置环境变量,直接可以运行:


mvn -version
复制代码


返回信息:


(base) ➜  ~ mvn -version  Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)  Maven home: /opt/homebrew/Cellar/maven/3.6.3_1/libexec  Java version: 11.0.11, vendor: Azul Systems, Inc., runtime: /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home  Default locale: zh_CN_#Hans, platform encoding: UTF-8  OS name: "mac os x", version: "11.2.2", arch: "aarch64", family: "mac"  (base) ➜  ~
复制代码


默认会安装最新稳定版。


同时,运行 brew list maven,就可以查看 maven 的具体安装目录,这个一会儿会用到:


(base) ➜  ~ brew list maven  /opt/homebrew/Cellar/maven/3.6.3_1/bin/mvn  /opt/homebrew/Cellar/maven/3.6.3_1/bin/mvnDebug  /opt/homebrew/Cellar/maven/3.6.3_1/bin/mvnyjp  /opt/homebrew/Cellar/maven/3.6.3_1/libexec/bin/ (4 files)  /opt/homebrew/Cellar/maven/3.6.3_1/libexec/boot/ (2 files)  /opt/homebrew/Cellar/maven/3.6.3_1/libexec/conf/ (3 files)  /opt/homebrew/Cellar/maven/3.6.3_1/libexec/lib/ (70 files)
复制代码


至此,运行 Java 项目的两大前提:JDK 和 Maven,我们就都安装完毕了。


下面让我们配置 M1 mac 下开发 Java 的利器:Vscode,去官网下载即可:https://code.visualstudio.com/Download# ,但是需要注意的是,一定要选择 arm64 架构的版本:



下载后,进行安装操作,安装完成后,我们需要装两个插件帮助我们运行 Java 项目。


首先打开左侧应用商店菜单,搜索:Java Extension Pack 。进行安装,这是 Java 的扩展包,



随后,搜索:Spring Boot Extension Pack ,进行安装,它是 Springboot 的扩展包。



安装这俩个扩展包时,系统会陆续自动安装另外一些依赖包,耐心等待即可。


安装成功后,重启 vscode,随后打开上面菜单中的 code->首选项->设置,搜索 maven,然后点选“在 settings.json”中编辑:



在配置文件中,需要加入以下配置:


 "java.home": "/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home", //JAVA_HOME        // 指定 maven 的配置文件位置      "java.configuration.maven.userSettings": "/opt/homebrew/Cellar/maven/3.6.3_1/libexec/conf/settings.xml",            //maven 环境变量,指定为 mvn      "maven.executable.path": "mvn",         //自动更新影响的pom      "maven.pomfile.autoUpdateEffectivePOM": true,       //跳过测试, 不需要跳过可删除      "maven.executable.options": "-DskipTests",         //当此值设为 true 时,且配置了“java.home”时,      //新建终端会自动添加环境 JDK 环境变量 为 “java.home"的值      "maven.terminal.useJavaHome": true,        //指定 maven 所用 jdk       "maven.terminal.customEnv": [          {              "environmentVariable": "JAVA_HOME", //环境变量名               "value": "/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home",    //JDK 安装 路径                      }      ],            //在构建时,自动修改 java 项目的配置信息 ,classpath信息      "java.configuration.updateBuildConfiguration": "automatic",
复制代码


这里主要的变量就是 JDK 的路径和 Maven 配置文件的路径,分别对应到刚刚安装好的两个路径,分别是:/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home 和/opt/homebrew/Cellar/maven/3.6.3_1/libexec/conf/settings.xml


做好配置后,安装好的扩展就可以用了,再次重启 vscode。


让我们来体验一下 Springboot 的魅力,输入快捷键:


command + shift + p


打开命令模式,键入:spring,选择创建 Maven 项目:



选择 Springboot 版本:2.4.5;语言:Java;GroupId 直接默认回车;项目名称:mydemo;打包方式选择:Jar;JDK 版本:11;默认依赖:DevTools(代码修改热更新,无需重启)、Web(集成 tomcat、SpringMVC)、Lombok(智能生成 setter、getter、toString 等接口,无需手动生成,代码更简介)、Thymeleaf (模板引擎)。


选择好要引入的包后直接回车,在新弹出的窗口中选择项目路径,到此 Spring Boot 项目创建完成:



随后将创建好的 mydemo 项目导入到 vscode 的工作空间:



之后,点选左侧小虫子图标,为项目添加启动文件,选择 Java:



此时,需要等待一下,vscode 会导入相关依赖。


创建成功后,会发现项目的根目录新增了一个.vscode 文件件里面有一个启动文件 launch.json:


{      // 使用 IntelliSense 了解相关属性。       // 悬停以查看现有属性的描述。      // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387      "version": "0.2.0",      "configurations": [          {              "type": "java",              "name": "Launch Current File",              "request": "launch",              "mainClass": "${file}"          },          {              "type": "java",              "name": "Launch MydemoApplication",              "request": "launch",              "mainClass": "com.example.mydemo.MydemoApplication",              "projectName": "mydemo"          }      ]  }
复制代码


有了它,我们就可以用内置服务器启动项目了,现在打开项目文件夹中的入口文件/mydemo/src/main/java/com/example/mydemo/MydemoApplication.java,改成下面的样子:


package com.example.mydemo;    import org.springframework.boot.SpringApplication;  import org.springframework.boot.autoconfigure.SpringBootApplication;    import org.springframework.web.bind.annotation.RequestMapping;  import org.springframework.web.bind.annotation.RestController;    @RestController  @SpringBootApplication  public class MydemoApplication {      public static void main(String[] args) {      SpringApplication.run(MydemoApplication.class, args);    }      @RequestMapping("/")    public String home() {      return "Hey,欢迎来到M1 mac的世界";    }    }
复制代码


这里我们用简单的路由映射到一个简单的视图,首页返回一串文字。


接着打开小虫子图标,点开控制台,然后点击三角箭头启动项目:



服务应声启动:


(base) ➜  mydemo git:(master) ✗  /usr/bin/env "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" -agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=localhost:62011 -Dfile.encoding=UTF-8 -cp /var/folders/5x/gpftd0654bv7zvzyv39449rc0000gp/T/cp_bp8k59s9mveb6o8xc0fjjde5w.jar com.example.mydemo.MydemoApplication       .   ____          _            __ _ _   /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \  ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \   \\/  ___)| |_)| | | | | || (_| |  ) ) ) )    '  |____| .__|_| |_|_| |_\__, | / / / /   =========|_|==============|___/=/_/_/_/   :: Spring Boot ::       (v2.3.10.RELEASE)    2021-05-20 23:05:27.439  INFO 39304 --- [  restartedMain] com.example.mydemo.MydemoApplication     : Starting MydemoApplication on liuyue with PID 39304 (/Users/liuyue/wodfan/work/mydemo/bin/main started by liuyue in /Users/liuyue/wodfan/work/mydemo)  2021-05-20 23:05:27.443  INFO 39304 --- [  restartedMain] com.example.mydemo.MydemoApplication     : No active profile set, falling back to default profiles: default  2021-05-20 23:05:27.675  INFO 39304 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable  2021-05-20 23:05:27.676  INFO 39304 --- [  restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG'  2021-05-20 23:05:29.223  INFO 39304 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)  2021-05-20 23:05:29.237  INFO 39304 --- [  restartedMain] o.apache.catalina.core.StandardService   : Starting service [Tomcat]  2021-05-20 23:05:29.237  INFO 39304 --- [  restartedMain] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.45]  2021-05-20 23:05:29.301  INFO 39304 --- [  restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext  2021-05-20 23:05:29.301  INFO 39304 --- [  restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1624 ms  2021-05-20 23:05:29.689  INFO 39304 --- [  restartedMain] o.s.s.concurrent.ThreadPoolTaskExecutor  : Initializing ExecutorService 'applicationTaskExecutor'  2021-05-20 23:05:29.975  WARN 39304 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : Unable to start LiveReload server  2021-05-20 23:05:30.036  INFO 39304 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''  2021-05-20 23:05:30.063  INFO 39304 --- [  restartedMain] com.example.mydemo.MydemoApplication     : Started MydemoApplication in 3.13 seconds (JVM running for 3.838)
复制代码


此时打开浏览器,访问:http://localhost:8080



结语:在过往印象中,Java 是一款严肃的语言,它古板、教条、一丝不苟,处处循规蹈矩,但其实,随着时代的发展,你会发现它其实是与时俱进的,在时代的浪潮中迸发出了 Spring boot 这样“习惯优于配置”的框架,彻底颠覆了传统 Java 项目笨重、繁多的配置、低下的开发效率、复杂的部署流程以及第三方技术集成难度大的特点,并且在 M1 mac 系统下,我们可以很轻松的用 Vscode 来写 Java 代码,就像写 Python 一样。最后,奉上项目代码与君共觞:https://gitee.com/QiHanXiBei/mydemo.git


原文转载自「刘悦的技术博客」 https://v3u.cn/a_id_194

发布于: 2021 年 05 月 20 日阅读数: 1484
用户头像

专注技术,凝聚意志,解决问题 v3u.cn 2020.12.21 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
用了一段时间还是放弃转向 Intellij 或者 eclipse 了。毕竟 refactory 包名等操作,,,还是专业的工具香
2021 年 06 月 04 日 13:45
回复
没有更多了
珠联壁合地设天造|M1 Mac os(Apple Silicon)基于vscode(arm64)配置搭建Java开发环境(集成web框架Springboot)