原文转载自「刘悦的技术博客」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/download... ,这里咱们抉择了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... ,然而须要留神的是,肯定要抉择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/...

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