JShell支持TAB键自动补全, 因此我们可以很容易找到println()或者其他我们想使用的方法:
-> System.out.printprint(printf(println(
传统的表达式求值也很容易,但是相比其他动态类型语言,Java的静态类型特征会更严格一点 。JShell会自动创建临时变量来保存表达式的值,并确保它们保持在上下文域内供以后使用:
-> 3 * (4 + 5)|Expression value is: 27|assigned to temporary variable $1 of type int-> System.out.println($1);27
我们还可以使用/list命令,查看到目前为止输入的所有源代码:
-> /list9 : 3 * (4 + 5)10 : System.out.println($1);
使用/vars命令显示所有的变量(包括显式定义的和临时的),以及他们当前持有的值:
-> String s = "Dydh da"|Added variable s of type String with initial value "Dydh da"-> /vars|int $1 = 27|String s = "Dydh da"
除了支持简单的代码行,REPL还允许非常简单地创建类和其它用户定义的类型 。例如,可以用如下短短一行来创建类(请注意,开始和结束括号是必需的):
-> class Pet {}|Added class Pet-> class Cat extends Pet {}|Added class Cat
JShell代码非常简洁、自由浮动的性质意味着我们可以非常简单地使用REPL来演示Java语言的功能 。例如,让我们来看看著名的类型问题,即Java数组的协变问题:
-> Pet[] pets = new Pet[1]|Added variable pets of type Pet[] with initial value [LPet;@2be94b0f-> Cat[] cats = new Cat[1]|Added variable cats of type Cat[] with initial value [LCat;@3ac42916-> pets = cats|Variable pets has been assigned the value [LCat;@3ac42916-> pets[0] = new Pet()|java.lang.ArrayStoreException thrown: REPL.$REPL13$Pet|at (#20:1)
这样的功能使JShell成为一种伟大的教学或研究工具,而且最接近Scala REPL的体验 。使用/classpath切换,可以加载额外的jar包,从而可以在REPL直接使用互动式探索性API 。
参与主要的IDE已开始提供支持JDK 9早期版本的构建——包?.NETbeans和Eclipse Mars 。IntelliJ 14.1据称支持JDK9,但目前还不清楚对新的模块化JDK扩展的支持力度 。
到目前为止,这些IDE还不支持HTTP/2和JShell,因为这些功能还没有登陆OpenJDK的主干,但是开发者应该很期望它们能够早日出现在标准的JDK beta版本中,并且有IDE插件可以紧随其后 。这些API仍在开发中,项目的领导者正在积极寻求最终用户的使用和参与 。
The JDK 9 Outreach programme is also underway to encourage developers to test their code and applications on JDK 9 before it arrives. HTTP/2 & JShell aren't the only new features being worked on - other new JDK 9 functionality under development as JEPs includes
JDK 9的宣传计划也正在鼓励开发者测试他们的代码并在JDK 9上运行应用程序 。正在开发的新功能不止包括HTTP/2和JShell—— 其他作为JEP,JDK 9正在开发的新功能还包括:
- 102 Process API的更新(Process API Updates)
- 165 编译器控制(Compiler Control)
- 227 Unicode 7.0
- 245 验证虚拟机代码行标记参数(Validate JVM Command-Line Flag Arguments)
- 248: G1作为默认的垃圾回收器(Make G1 the Default Garbage Collector)
- TLS的一系列更新(TLS Updates) (JEP 219, 244, 249)
关于作者Ben Evans是Java/JVM性能分析初创公司jClarity的CEO 。在业余时间,他是伦敦Java社区的领导者之一并且是Java社区进程执行委员会的一员 。他之前的项目经验包括Google IPO的性能测试、金融交易系统、为90年代一些最大的电影编写备受好评的网站等 。
【Java9 的 HTTP2 和 REPL 有哪些新功能?】
推荐阅读
- 护士/护理人员的完整简历范文 护士简历范文
- |职场中有哪些常见的套路?
- |职场上,面子不是所谓的客气,而是让自己有了自信,让自己成功
- 养狗好处vs养狗坏处 养宠物的利弊
- 配音|余生,做一个能扛事的成年人
- 秋作文400字18篇作文 秋天的作文400字
- 翡翠手镯|翡翠手镯的价值,傻瓜教程,教你这样看懂翡翠手镯的色泽
- 短发|爱美的美女看过来,你知道秋天为什么要补水吗?
- 无基础唱歌技巧和发声方式教学 学习唱歌的方法
- 全球变暖的危害有哪些 全球变暖的后果