原文转载自「刘悦的技术博客」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