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

本文主要是介绍珠联壁合地设天造|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)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/455926

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

一篇文章彻底搞懂macOS如何决定java环境

《一篇文章彻底搞懂macOS如何决定java环境》MacOS作为一个功能强大的操作系统,为开发者提供了丰富的开发工具和框架,下面:本文主要介绍macOS如何决定java环境的相关资料,文中通过代码... 目录方法一:使用 which命令方法二:使用 Java_home工具(Apple 官方推荐)那问题来了,

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境