范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

M1Mac基于vscode搭建Java开发环境(集成web框架Springboot)

  也许有人从未听说过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

郁闷,德罗赞撕毛巾泄愤,和主帅激烈讨论,他对自己要求太高了NBA常规赛一场焦点战,芝加哥公牛队主场迎战布鲁克林篮网。比赛进行到第三节时,场边捕捉到一幕花絮,德罗赞郁闷之下,撕毛巾泄愤,还和主帅多诺万激烈讨论,他对自己的要求太高了。这场比赛穆铁柱退役后无法长时间站立,儿女和他不亲,08年病逝姚明评价对于很多8090后球迷来说,提起篮球,他们首先想到的就是姚明。但是对于很多年纪更大的球迷来说,他们首先想到的可能是另一个名字穆铁柱。作为上世纪七八十年代中国篮球的顶梁柱,穆铁柱在很如果遇上冬天堵车,特斯拉汽车能为你供暖多久?一周前,在美国发生了一次州际公路大堵车,这次堵车持续超过24小时,堵车长龙长达48英里(约77公里)。于是,在这个汽车电动化高度发展的环境下,堵车中的纯电动汽车成为了很多网友热议的全力追逐哈登!篮网要完了啊最近7场比赛,篮网输掉了其中的5场此前的篮网是打不过强队,但虐菜还是稳稳当当的如今的篮网那是谁都打不过,比输球更可怕的是,篮网全队失去了凝聚力,每个人看上去都像是心事重重,愁眉苦脸天赋真是香!联盟第一黑马诞生,22岁榜眼带队争冠稍早之前,近期迎来一波九连胜的灰熊主场迎战迎回克莱的勇士,原本以为这是一场极为焦灼的比赛中,可没曾想勇士一度落后多达18分,全民皆兵的灰熊最终靠着6人得分上双,以116比108轻取郭士强下狠手!弃用李京龙,不给李春江面子进入到第二阶段,广州队在开局阶段并不顺利,揭幕战输给青岛队,后面又输给了浙江队和上海队,遭遇三连败,都说广州队在第一阶段只是昙花一现,到了第二阶段就不行了。但最近广州队成功复仇青岛最终幻想7重制版游戏文件暗示登陆Steam最终幻想7重制版(PC)12月16日登陆了Epic商城发售,目前这款游戏只能在Epic和索尼PlayStation平台买到。SE还没有官宣其他平台。然而Mod作者发现了该作还将登陆LOL德杯冷门多,三支参加S10世界赛劲旅不敌主播队,LGD压力大时至深夜,LOL德玛西亚杯小组赛即将进行过半,在IGRALGD等LPL队伍登场前,D组A组内战已经落下帷幕,先是黑暗势力OMG依靠胜负关系挺进八强,再是豪取三连胜的TES更进一步,1000元预算能买什么手机?千元档的手机也就是老人机了,不要对它的性能拍照怀有太多幻想。下面推荐的3款是各方面比较均衡的,屏幕素质也是比较不错的。1realme真我Q3s(支持5G)拼多多百亿补贴价格6G12索尼更新教团1886商标续作要来索尼悄悄更新教团1886商标信息续作终于要来?教团1886这个2015年PS4独占发行的作品曾让人眼前一亮,蒸汽朋克哥特怪物的题材在市面上是很少有的,累积了一批粉丝,但因为较短的游戏时长重复的玩法以及平淡的剧情等,让它获得了褒落魄冠军嫁还俗和尚,做搓澡工被人认出,整容成功活出自信2006年的一天,邹春兰还是像往常一样到澡堂上班。那天她给一个女顾客搓澡,那个客人时不时的看看邹春兰,又时不时的摇摇头。最后她忍不住问你是那个举重冠军吗?邹春兰吃了一惊!愣了愣,很
十一期间正式开放!鄂尔多斯野生动物园又一处动物天堂高山馆经过提升改造后将于十一假期正式与游客见面高山馆坐落于虎豹馆东侧100米的位置。在高山馆内生活着神兽四不像麋鹿欧洲盘羊梅花鹿马鹿黇鹿。总面积50优秀!石川佳纯又有新动态,最新职务曝光,球迷直言赶紧嫁过来如今,提及最受中国球迷欢迎的日本运动员是谁?相信很多人都会说到石川佳纯,因为,曾经在中国生活过的她,不仅说得一口流利的中文,多次表达对中国的喜爱和友好,跟国乒的队员关系很好,而且,合纵连横,自动驾驶出租车商业化加速导读随着Robotaxi业务规模的不断扩大,更多新玩家开始在这条赛道上摩拳擦掌。(文潘昱辰编辑周远方)自动驾驶出租车(Robotaxi)业务,正成为自动驾驶产业的又一风口。在各地政横扫34C的节奏!这高智能中国车卖爆了4秒破百还不到30万?自9月中旬蔚来ET5展车陆续到店以后,前来看车的人络绎不绝,新车的爆款特质可见一斑。而在本月底即将开启交付之际,有海外投资分析公司推算蔚来ET5的订单已经超过20万辆,超越了202京东双11开始报名,还未入驻的商家如何赶上今年双11,获生意增长今年的京东双11活动,已正式开始报名。报名时间截止到10月18日。双11活动时间为10月20日11月13日,为期25天。整个活动节奏为种草期预售预热期开门红品类场景期高峰期。今年京VR教育穿梭时空身临其境视频加载中随着VR技术在不同行业都得到了应用与发展,那作为业界所说最适合融入VR的教育领域,到底是怎么和VR做加法的呢?我们接着看。在同学们漫长的学习成长过程中,老师要做的第一步就何小鹏的梦中情车小鹏G9的生死线9月21日晚,小鹏汽车终于发布了一款去年11月就亮相的,被何小鹏称为梦中情车的小鹏G9。最早亮相,却晚于同为中大型SUV的蔚来ES7理想L9的上市交付,友商对标库里南,小鹏也把保时让人啼笑皆非的一幕出现了,中国减少采购芯片,欧美芯片内讧据悉随着中国芯片自给率的上升,中国减少从海外采购芯片,这已让欧美芯片开始竞争剩下的份额,此前它们想方设法不卖芯片给中国,如今芯片过剩了,为了市场欧美芯片开始竞相降价抛货,成为一场闹有钱人真多!iPhone14Pro系列畅销,苹果垄断60高端市场根据多份调查数据显示,上半年国内智能手机销量持续下滑,平均跌幅都在20以上。正当大家感叹买不起手机的时候,iPhone14Pro系列却持续畅销垄断高端市场,将近万元旗舰机供不应求,iPhone14,苹果盛极而衰的标志?文丨任华赢就在刚刚,我拜读了一位知名经济学家的微博,大致内容是以iPhone14灵动岛为核心,先后指责了苹果在创新能力上的不足以及啃老本上的功底,最后得出一句iPhone14可能是中国集成抽油烟机市场报告及市场预测报告围绕研究期间内集成抽油烟机市场走势驱动因素细分市场产销状况竞争格局等方面展开调研,依据行业的发展态势,对未来五年内集成抽油烟机市场发展前景趋势进行了客观谨慎的研究分析,为行业内