网站首页 > 技术文章 正文
对开发者来说,就算是同一种语言,我们也可能会在电脑上装数个不同版本的环境,以应对一些历史包袱和复杂多变的客户环境。
所以长远来看,对待任何一门语言的SDK环境,我们都应找到一种方式,合理管理不同的SDK版本。这里我强烈建议你在处理自己电脑的开发环境时,有意识地对SDK版本进行管理,而不是直接上网搜了个最新版的安装包,莫名其妙地装,莫名其妙地用。
别担心,这并不难。各路大神已经把轮子给你造好了。
几乎对任何一门语言,只要你在网上搜索:
xxxLanguage version manager
稍加甄别就能得到自己想要的答案。当然,下面我也把常用的一些语言及环境的version manager列了出来,供你享用。
- Java——sdkman
- Java——jabba
- Python——Miniforge
- Python——Anaconda
- Python——pyenv
- Node——nvm
- Go——gvm
- Ruby——rvm
- PHP——phpbrew
这些工具的使用大同小异,咱们前后端各选一个代表测试一下,下面先来演示node的管理环境nvm。
安装
直接在终端里执行这句话即可:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
使用
配置完毕后,打开一个新的终端,可以通过nvm ls-remote列出所有可用的node版本了,如果只想查看lts版本,可以通过追加参数实现,nvm ls-remote --lts。确认要安装的版本后,就可以通过nvm install v15.11.0的方式安装了。如果你安装了多个版本,需要在不同版本间切换,只需要简单的使用nvm use v15.11.0就可以进行版本切换了。
更多
关于nvm的使用,还有很多功能有待你来发掘,具体可以执行nvm --help获得更多有用信息。顺便一提,用nvm在ARM架构的Mac电脑上安装node的时候,是基于node的源码进行本地编译安装的,因而你将获得一个ARM版本的node,这点对正在使用M1芯片Mac的小伙伴非常友好。
介绍完了前端,咱们再来看看后端,这里以Java的sdkman进行演示。
安装
也是非常简单,一句话的事。
curl -s "https://get.sdkman.io" | bash
使用
列出可用的Java(JDK)版本,执行sdk list java即可,然后通过执行sdk install java 15.0.2-zulu就可以安装你需要的JDK版本了。
额外说一句,如果是ARM架构的Mac其实是支持x86和ARM两种架构的JDK的,只是前者要经过MacOS的Rosetta2的转译,大部分情况下我们为了追求性能想使用ARM版本的JDK,此时你可以更改sdkman的配置文件,vim ~/.sdkman/etc/config,找到sdkman_rosetta2_compatible那一行,如果设置成true,就仅显示ARM版本的JDK了。
如果你安装了多个版本的JDK,一样可以通过sdk use java 8.0.275-amzn的方式进行切换。如果你想改变全局环境的默认JDK版本,则可以使用sdk default java 8.0.275-amzn进行设置。
其他
sdkman除了支持JDK的版本管理外,还支持Java系的很多技术栈,比如:Gradle、Maven、Kotlin、Groovy等。所以如果你有这方面需求的话,记得执行sdk --help探索更多有用功能哦。
八卦
其实关于sdkman还有一段有意思的往事,曾经sdkman的名字是gvm,专门用来管理一门自2003年就存在的Groovy语言,这门语言跟Java一样,也是运行在JVM(Java虚拟机)上的。
但是后来程序界又迎来了另一个G姓语言——Go,越来越多的小伙伴希望gvm这个名字能见文知意,用作Go的版本管理,而不是去管理一个小众的JVM语言。
于是在2015年,之前维护gvm的小伙伴,宣布了gvm改名为sdkman,从而把gvm的使用权交给了Go Version Manager。【需要python学习资源请私信我】
- 上一篇: 集简云SDK嵌入支持传值,支持通过接口创建和管理流程
- 下一篇: 离线项目实践之sdk数据收集
猜你喜欢
- 2024-11-27 3小时 5步骤 快赢秒接手游渠道SDK
- 2024-11-27 Java服务器端模拟SDK向服务器发送数据
- 2024-11-27 Web3教程:仅仅一个周末,只用JS就可以构建出你自己的DAO(2)
- 2024-11-27 字节跳动小程序收银台集成支付宝、微信支付
- 2024-11-27 如何在 Vuejs 中使用 Supertokens 的预构建 UI
- 2024-11-27 一款建筑信息模型的BIM轻量化开发引擎
- 2024-11-27 前端对接微信公众号网页开发流程,JSSDK使用
- 2024-11-27 一文搞懂“支付核心”
- 2024-11-27 webfunny前端监控新功能分享:小程序、uni-app埋点SDK集成
- 2024-11-27 闲鱼前端如何做容灾
你 发表评论:
欢迎- 597℃几个Oracle空值处理函数 oracle处理null值的函数
- 591℃Oracle分析函数之Lag和Lead()使用
- 579℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 575℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 571℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 564℃【数据统计分析】详解Oracle分组函数之CUBE
- 550℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 544℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- 前端获取当前时间 (50)
- 前端接口 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)