珠联壁合地设天造|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
珠联壁合地设天造|M1 Mac os(Apple Silicon)基于vscode(arm64)配置搭建Java开发环境(集成web框架Springboot)的更多相关文章
- 从零开始搭建Java开发环境第一篇:Java工程师必备软件大合集
1.JDK https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 目前主流的JDK版 ...
- Python合集之Python开发环境在Windows系统里面搭建
在上一个合集里面我们了解到了Python的基础信息及学习了Python对我们有什么用处,那么今天我们来了解一下,Python的开发环境该如何搭建.(注:Python的开发环境可以在Windows.MA ...
- 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明
目录 联盛德 HLK-W806 (一): Ubuntu20.04下的开发环境配置, 编译和烧录说明 联盛德 HLK-W806 (二): Win10下的开发环境配置, 编译和烧录说明 联盛德 HLK-W ...
- 第三篇 基于.net搭建热插拔式web框架(重造Controller)
由于.net MVC 的controller 依赖于HttpContext,而我们在上一篇中的沙箱模式已经把一次http请求转换为反射调用,并且http上下文不支持跨域,所以我们要重造一个contro ...
- 「造个轮子」——cicada(轻量级 WEB 框架)
前言 俗话说 「不要重复造轮子」,关于是否有必要不再本次讨论范围. 创建这个项目的主要目的还是提升自己,看看和知名类开源项目的差距以及学习优秀的开源方式. 好了,现在着重来谈谈 cicada 这个项目 ...
- Linux入门搭建可视化桌面环境小合集virtual box centOS7.10
常用命令: 关联主机与虚拟机(方便文件共享): # sudo mount -t vboxsf share(主机文件夹名) /usr/share(虚拟机内自创) Linux shell进入root模式: ...
- win7win8 64位汇编开发环境合集安装与设置
win7win8 64位汇编开发环境合集安装与设置 下载 win7 win8 64位汇编开发环境.rar 下载地址(免积分下载) http://download.csdn.net/detail/li ...
- 记录面试龙腾简合-java开发工程师经历
/** * ############ * 变强是会掉光头发的!现在的头发还是很茂盛,是该开心还是难过呢.. * ############ * / 总结下近期面试龙腾简合-java开发岗的经历.附上笔试 ...
- 绿联Type-C千兆网卡AX88179芯片驱动(苹果Mac OSX系统)CM141丨CM179
绿联Type-C千兆网卡AX88179芯片驱动(苹果Mac OSX系统)CM141丨CM179 下载地址:https://www.lulian.cn/download/6-cn.html AX8817 ...
随机推荐
- git 1.2
1.git服务器的搭建 gitlab 常用命令: gitlab-rails console -e production 进入控制台指令 sudo gitlab-ctl start # 启动所有 gi ...
- 手写vue路由
目录 一.简易demo 二.Vue-Router传参方式 三.进阶-路由导航 一.简易demo // routes注册 import Vue from "vue"; // impo ...
- ArcGIS和ArcEngine导出地图时,png格式支持背景透明
1.ArcGIS支持导出PNG,背景透明 导出png时,背景色和透明色不能设置为空,必须设置为同一个颜色,通常使用白色. 2.ArcEngine支持导出PNG,背景透明 //1.创建export IE ...
- Python实现将csv文件转化为html文件
核心技术: Pandas 需要转化的csv文件(business.csv): 源代码: import pandas as pd f=pd.read_csv("business.csv&quo ...
- python基础数据类型1
python基础数据类型1 part1: ''' ''': 三个单引号用于换行的字符串 字符串可以相加(拼接)相乘(重复) 在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代 ...
- 「ABC 249Ex」Dye Color
考虑停时定理. 初始势能为 \(\sum \Phi(cnt_i)\),末势能为 \(\Phi(n)\),我们希望构造这样一个 \(\Phi:Z\to Z\) 函数,使得每一次操作期望势能变化量为常数. ...
- Python 微博搜索爬虫
微博搜索爬虫 网页分析 由于网页端反爬虫机制比较完善所以才去移动端进行爬虫. url地址:https://m.weibo.cn/ 搜索框,输入关键词进行搜索 对网页进行抓包,找到相关数据 查看数据是否 ...
- Vmware虚拟机安装及相关配置流程
1.Vmware虚拟软件安装 1.1下载地址 vmware 12 pro 的版本稳定性较好,所有我们最好选择该版本 下载地址:https://www.onlinedown.net/soft/10053 ...
- 开发工具-Redis Desktop Manager下载地址
更新记录 2022年6月10日 完善标题. 官方: https://github.com/uglide/RedisDesktopManager 免费打包版: https://github.com/le ...
- TypeScript(3)基础类型
基础类型 TypeScript 支持与 JavaScript 几乎相同的数据类型,此外还提供了实用的枚举类型方便我们使用. 布尔值 最基本的数据类型就是简单的true/false值,在JavaScri ...