mac配置多个jdk并体验java10的新特性 - Go语言中文社区

mac配置多个jdk并体验java10的新特性


看同事使用java9的jshell功能,很眼馋,遂自己体验一番。
首先下载jdk9,到oracle官网,发现java9已经不再使用了(黑人问号???),推荐你使用java10,页面几秒后会跳到java10的下载页面。
这里写图片描述
遂下载java10。
这里写图片描述
安装,mac之前本来就装有jdk8,安装之后查看当前电脑安装的所有jdk:

/usr/libexec/java_home -V

这里写图片描述
说明安装成功了。
为了方便使用,修改~/.bash_profile,在原先的基础上将其改为:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home
JAVA_10_HOME=/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home

export JAVA_HOME
export PATH
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
export PATH=/usr/local/bin:$PATH
export PATH="/usr/local/bin:$PATH"

alias jdk8="export JAVA_HOME=$JAVA_HOME"
alias jdk10="export JAVA_HOME=$JAVA_10_HOME"

然后保存,source ~/.bash_profile使其生效。
首先查看当前的系统环境变量的jdk是什么版本:java -version

Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

现在是jdk8,现在将其切为jdk10,运行命令(上面定义的别名)jdk10
再查看版本:

java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)

切换为jdk10了,然后就可以使用jshell了。
键入命令jshell,屏幕如下:
这里写图片描述
按照提示输入/help intro:

|
|                                   intro
|                                   =====
|
|  使用 jshell 工具可以执行 Java 代码,从而立即获取结果。
|  您可以输入 Java 定义(变量、方法、类等等),例如:int x = 8
|  或 Java 表达式,例如:x + x
|  或 Java 语句或导入。
|  这些小块的 Java 代码称为“片段”。
|
|  这些 jshell 工具命令还可以让您了解和
|  控制您正在执行的操作,例如:/list
|
|  有关命令的列表,请执行:/help

jshell可以直接执行java代码,这个和python的交互模式很像,比如:
这里写图片描述
像循环什么的也都可以执行,就是执行一个代码片段:

jshell> for(int i = 0; i < 10; i++){System.out.println(i);}
0
1
2
3
4
5
6
7
8
9

java10还引入了更彻底的变量类型推断,可以使用类似js的var来声明变量。

jshell> var i = new Integer(10);System.out.println(i.getClass());
i ==> 10
class java.lang.Integer

试了几个lambda表达式和线程,发现都可以正确执行:

jshell> Arrays.asList(new String[]{"java","jdk10","jshell"}).stream().forEach(s -> System.out.println(s))
java
jdk10
jshell
jshell> new Thread(() -> {for(var i = 0; i < 10; i++){System.out.println(i);}} ).start()
0
1
2
3
4
5
6
7
8
9

退出:

jshell> /exit
|  再见

以后可以当一个测试工具使用。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/a_842297171/article/details/81510004
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-07 16:34:24
  • 阅读 ( 871 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢