现在如何开始使用Java9最酷的功能之一?上周终于抽空拿到了Java9抢先体验版,第一站是JShell,也就是Kulla项目,这也是我第一次鼓起勇气尝试Java9抢先体验的原因版本。是的,官方Java9版本目前计划于2016年9月发布,但抢先体验中已经有功能齐全的JShell。新帖子:Java9先睹为快:JShell编程实践-#JavaREPLhttp://t.co/F8cQ9X5dQMpic.twitter.com/JoWR6i8PSz-Takipi(@takipid)2015年7月7日有趣的事实1:项目Kulla它是内部JShell研发团队名称。库拉是美索不达米亚神话中的建造者之神,建造完成后被放逐。这是否暗示Kulla的用例是一种学习工具?那么JShell到底是什么?JShell/Kulla项目是第一个官方的JavaREPL(Read-Eval-Print-Loop的缩写,交互式编程环境),一个命令行工具。它允许您在不使用类或方法包装器的情况下执行Java语句。它类似于Python或其他原生支持REPL的JVM语言(例如Scala和Groovy)的解释器。在Java9即将推出的特性中,这绝对是比较有趣的特性之一。如需了解即将推出的JDK的更多有趣功能(ProjectJigsaw除外!),您可以阅读我们之前关于Java9的5大功能的文章,这些功能可以改变您的编码方式。到现在为止,如果您想在Java中使用REPL,您可以使用具有多语言支持的repl.it或非官方JavaREPL项目等替代方案。但是对于Java9,REPL与langtools包一起直接捆绑到JDK中。趣事2:另一个OpenJDK项目也有一个美妙的名字是Valhalla;它的目标是超越Java9,专注于数字类型和泛型具体化功能的开发。不友善。事不宜迟,让我们运行它,看看它能做什么。在下面很短的终端录制视频中,我们运行JShellv0.61完成了一个快速测试(OSX10.10.3中有一个已知问题,提示和部分输出混合在一起。不用担心,后续修复尽快地)。(译者注:JShell视频请参考原文)回顾一下我们刚刚看到的:JShell的一些最有趣的特性[8/7/2015]更新:编辑自OracleJava架构师BrianGoetz的笔记.1.分号对于纯语句是可选的HelloJShell!基于REPL快速灵活的特点,我们可以放宽心,不需要在语句末尾加分号:HelloJShell!这里真的没有分号。事实上,在我们对未来Java特性的调查中,这个特性得到了大多数人的认可。当然分号仍然保留,既作为终止符又作为分隔符。REPL允许一次性输入纯表达式和语句,因此对于JShell终端用例,分号是可选的。2.REPL网络在使用JShell的时候,我们不局限于机器和网络访问,这带来了一些有趣的机会。例如,将其视为与服务器对话的终端,远程连接到服务器并从外部控制一些参数。另一种选择是查询数据库,这里确实有这种可能性。使用JShell获取HTTP请求头的简单示例3.求助!保存和加载工作区除了运行和评估Java语句外,JShell还支持一系列命令行来帮助您了解和浏览REPL环境。您可以保存和加载工作区(这让Java有点像脚本语言)并在所有代码执行完毕后返回到命令行提示符(此时您可以看到我在终端视频中提到的OSX错误)。其他有用的命令行列出所有当前可用的变量和方法,显示所有命令历史记录,并列出您到目前为止编写的所有代码(有时这仍然有点奇怪)。以下是当前可用命令的完整列表:JShell/help4.无已检查异常如果您一直担心已检查异常会破坏您的REPL体验——不用再担心,JShell会在后台为您隐藏它们。在下面的示例中,我们应该强制捕获IOException,但它没有。下面的例子是我们正在读取和打印一个文件,不需要处理IOException。确实弹出已检查异常的一种情况是当我们尝试运行线程并在其中使用Thread.sleep()语句时。由于这是一个整体的方法而不是单一的纯语句,所以它一定是一个完全有效的Java语句:继续看终端视频中没有体现的其他一些特性5.Java表达式JShell终端也可以自己计算Java表达式。字符串连接、方法回调、算法等。基本上,可以评估任何可以包装在System.out.println(/expressionhere/)中的内容。正如您可能已经了解的其他计算一样,它会立即将结果分配给它自己的变量并打印出来。6.前向引用JShell对前向引用提供了很好的支持,所以你可以在定义方法时引用其他方法或变量,而这些方法或变量只会在一段时间后被定义。这是AdoptOpenJDK提供的REPL指南中的一个例子:7.JShellAPIJShell除了是一个独立的JDK工具,还可以提供一个API,可以开放所有的功能给外部调用。这意味着外部工具可以连接并使用JShell的功能,因此突然出现了一些有趣的可能性,例如在Eclipse、IntelliJ或Netbeans等IDE中引用它。这个API可能有更多创造性的用例,例如利用API扩展静态分析工具、自动化测试甚至连接到实时JVM。8.即时修改定义您可以重新声明变量、方法或类,而不必担心原始声明。完成后,您会收到一条消息,告诉您发生了什么,但除此之外一切照常。彩蛋:你所需要的只是爱如果你去/repl/samples目录,你会发现这个可爱的示例使用Swing制作,它会吸引你3个小心脏:Java<3REPL如何自己开始使用BeforegettingstartedwithJShell,查看来自伦敦Java社区(LJC)的关于采用OpenJDK的食谱:入门工具包。以下是可帮助您入门的步骤的快速摘要。特别是如果您以前从未玩过Java抢先体验。1.安装Java9抢先体验版JDK2。编译kulla-dev分支12345hgclonehttp://hg.openjdk.java.net/kulla/devkulla-devcdkulla-devbashconfigure–with-boot-jdk=/path/to/jdk1。8.0makecleanimagesmakeinstall<===optional3.CompileREPL12cdlangtools/replbash./scripts/compile.sh4.然后...现在你可以运行1bash./scripts/run.shOSX用户的重要注意事项:在运行compile.sh和run.sh之前,编辑这些脚本以将#!/usr/bin/sh更改为#!/bin/sh。如果您对该过程有任何疑问,请在下面的评论部分提交,我们将尽力提供帮助。总结很高兴看到Kulla项目日趋成熟并最终达到功能齐全的状态。JShell有广泛的用例,但最重要的是它可以帮助新的和现有的开发人员快速测试他们新学到的技能。基本的Java或新类会让您开始充实自己的大脑。此外,在当前的一段时间内,JShell凭借这些功能让Java与其他语言处于同一水平。或许未来在官方API和流畅的命令行体验下也能开辟新思路。原文链接:takipi翻译:ImportNew.com-无名侠女谭翻译链接:http://www.importnew.com/16353.html
