从今天开始如何开始使用Java 9最酷的功能之一?

上周末,我终于开始尝试使用Java 9的早期访问版本了。第一站是JShell,它也被称为Project Kulla。 首先让我鼓起勇气尝试早期访问Java版本的原因。

那就对了。 Java 9的正式发布日期当前设置为2016年9月,但是早期访问版本已经具有功能完整的JShell版本。 它仍在开发中,并且有一些古怪之处,但这从来没有阻止过我们。

新话题:9的Java早期访问:一个动手的Session JShell -该#Java REPL http://t.co/F8cQ9X5dQM pic.twitter.com/JoWR6i8PSz

— Takipi(@takipid) 2015年7月7日

有趣的事实1: Kulla项目是开发JShell的团队的内部名称。 库拉(Kulla)是美索不达米亚神话中的建筑神的名字,他在建筑工作完成后被驱逐。 暗示Kulla用例是一种学习工具吗?

那么,JShell是什么呢?

JShell / Project Kulla是第一个正式的Java REPL(Read-Eval-Print-Loop),这是一个命令行工具,使您可以自己运行Java语句,而不必将它们包装在类或方法中。 与Python的解释器或其他本机支持REPL的其他JVM语言(例如Scala和Groovy)类似。 在Java 9即将发布的功能中,它绝对是更有趣的功能之一。 要查看您附近的JDK即将推出的更多激动人心的功能(除了Project Jigsaw!),您可以阅读有关Java 9的前5个功能的前一篇文章, 这些文章将改变您的编码方式 。 到现在为止,如果您想使用Java进行REPL,则可以使用具有多种语言支持的repl.it之类的替代方案,或者使用非官方的Java REPL项目。 不过,在Java 9中,REPL与langtools软件包一起捆绑在JDK中。

有趣的事实2: 另一个带有神话名称的OpenJDK项目是Valhalla项目。 不仅限于Java 9,还致力于诸如值类型和泛型泛型等功能。 绝对是坏蛋。

但是,够了,让我们启动它,看看它能做什么。 在下面的简短终端编码中,我们将使用JShell v0.61进行快速测试(OSX 10.10.3存在一个已知问题,其中提示与一些输出混合在一起,所以请不要介意,它将可能很快就会解决):

启动并使用JShell

回顾我们刚刚看到的内容:JShell的一些最有趣的功能

** [8/7/2015]更新:使用Oracle Java语言架构师Brian Goetz的注释进行编辑

1.在裸露的语句上分号是可选的

您好JShell! 凭借REPL的快速和灵活特性,我们可以放轻松一些,而不必在声明的末尾添加分号:

不,这里没有分号

实际上,这是我们围绕将来的Java功能进行的一项调查中的一个受欢迎的回答。 当然,分号可以作为终止符或分隔符保留在这里。 REPL允许一次输入裸表达式和语句,因此分号对于Jshell上的终止符用例而言是可选的。

2. REPL网络

使用JShell,我们不仅限于我们的机器 ,还可以访问网络,这带来了一些有趣的机会。 例如,考虑将其用作与服务器通信的终端,远程连接到服务器并从外部控制某些参数。 另一个选择是查询您的数据库,这里的可能性确实是无限的。

显示通过JShell获取HTTP标头的简单示例

3.帮助! 保存和加载工作区

除了运行和评估Java语句外,JShell还支持一系列命令,以帮助您了解和浏览REPL环境。 您可以保存和加载工作区(使Java类似于脚本语言的工作区),然后在执行所有代码后返回命令提示符(实际上您可以在终端记录中看到我提到的OS X错误)。 。

其他有用的命令是列出所有当前可用的变量和方法,查看所有命令历史记录,并列出到目前为止所编写的所有代码(有时仍然有些怪异)。

这是当前可用命令的完整列表:

JShell的/帮助

4.没有检查过的异常

如果您担心被检查的异常会破坏您的REPL体验–不再害怕,那么JShell会在后台为您包装这些异常。 在下面的示例中,迫使我们捕获IOException的原因没有引起注意。 在这里,我们在不处理IOException的情况下读取和打印文件:

我们确实看到弹出一个检查到的异常的情况是,当我们尝试运行线程并在其中使用Thread.sleep()时。 由于它是一个完整的方法,而不是单个裸语句,因此它必须是完全有效的Java:

继续进行一些其他未在终端录制中使用的功能:

5. Java表达式

关于JShell终端的另一件事是,它还可以在其上评估Java表达式。 字符串连接,方法调用,算术等。 基本上,您可以在System.out.println(/ *此处* /)中包装的任何内容。 正如您可能已经在其他评估中注意到的那样,它将立即将结果放入其自己的变量中并打印出来:

6.转发参考

JShell对前向引用提供了相当不错的支持,因此您可以定义引用其他方法或变量的函数,这些方法或变量只会在以后定义。 这是AdoptOpenJDK的REPL教程中的示例:

7. JShell API

除了用作独立的JDK工具外,JShell还将提供一个API,可将其所有功能开放给外部使用。 这意味着外部工具可以连接并使用JShell的功能,并且突然出现了一些有趣的可能性,例如将其包含在Eclipse,IntelliJ或Netbeans等IDE中。 该API更具创造性的用例可能包括使用它来扩展静态分析功能,自动测试甚至可能挂接到实时JVM的工具。

8.随时更改定义

您可以重新声明变量,方法和类,而不必担心原始声明。 完成此操作后,系统会提示您一条消息,让您知道发生了什么,但除此之外–一切照旧。

奖励:您需要的只是爱

如果您深入研究/ repl / samples文件夹,则会发现这个可爱的示例,它将使用Swing吸引您3个小小的心:

Java

如何独自上手?

首先,请查看伦敦Java社区(LJC)的“ 采用OpenJDK:入门工具包”中的说明。 以下是对帮助您起步的步骤的简要概述,尤其是如果您以前从未使用过早期访问JDK版本时,尤其如此:

  1. 安装Java 9抢先体验JDK
  2. 构建kulla-dev分支:
    hg clone http://hg.openjdk.java.net/kulla/dev kulla-dev
    cd kulla-dev
    bash configure –with-boot-jdk=/path/to/jdk1.8.0
    make clean images
    make install <=== optional
  3. 建立REPL:
    cd langtools/repl
    bash ./scripts/compile.sh
  4. 并且...现在您可以运行了:
    bash ./scripts/run.sh

对于OS X用户的重要说明:在运行compile.sh和run.sh之前,请编辑脚本并将#!/ usr / bin / sh更改为#!/ bin / sh

如果您对此过程有任何疑问,请在下面的评论部分中发布它们,我们将竭尽所能。

结论

令人兴奋的是,库拉计划(Project Kulla)越来越接近成熟,它将具有功能完善的状态。 JShell具有广泛的用例,但首先,它将帮助新老开发人员快速测试他们的新技能。 无论是基本的Java还是新的库,您都刚刚开始思考。 而且,JShell使Java与具有这些功能的语言相提并论已有一段时间了,甚至还可以通过正式的API和流畅的命令行体验进一步推动Java的发展。

翻译自: https://www.javacodegeeks.com/2015/07/java-9-early-access-a-hands-on-session-with-jshell-the-java-repl.html

Java 9抢先体验:与JShell的动手实践– Java REPL相关推荐

  1. repl java9_Java 9抢先体验:与JShell进行动手实践– Java REPL

    repl java9 从今天开始,如何开始使用Java 9的最酷功能之一? 上周末,我终于开始尝试使用Java 9的早期访问版本.第一站是JShell,它也被称为Project Kulla. 首先让我 ...

  2. java自己写一个上下文_5.自己动手写Java Web框架-上下文

    现在IndexController中的方法都只有两个参数,request和response,和Servlet的参数保持一致.但是,这个很不Spring啊!@RequestParam,@PathValu ...

  3. 深入理解Java虚拟机(JVM高级特性与最佳实践java虚拟机)的一些知识总结

    GC在什么时候对什么做了什么? 要回答这个问题,先了解下GC的发展史.jvm运行时数据区的划分.jvm内存分配策略.jvm垃圾收集算法等知识. 先说下jvm运行时数据的划分,粗暴的分可以分为堆区(He ...

  4. java 拦截器ajax_(转)拦截器深入实践 - JAVA XML JAVASCRIPT AJAX CSS - BlogJava

    Interceptor的定义 我们来看一下Interceptor的接口的定义: Java代码 publicinterfaceInterceptorextendsSerializable { /** * ...

  5. netbeans 9_NetBeans 9抢先体验

    netbeans 9 Java 9即将来临,NetBeans 9也即将来临.在本文中,我们将看到NetBeans 9 Early Access为开发人员提供的支持,以帮助他们构建Java 9兼容的应用 ...

  6. wps2016抢先版_了解抢先体验游戏

    wps2016抢先版 If you're a PC gamer in 2020, then you've probably played or at least are aware of " ...

  7. JAVA17安装体验JFX17抢先体验

    JAVA17安装体验JFX17抢先体验 java17版本是长期支持版,至少更新5年以上.而且商用免费!这里我就来体验一把. 一.下载配置 java 17 官网下载地址:https://www.orac ...

  8. 一加点击android系统时间,终于等到你!一加发布国内首个Android P定制系统 一加6抢先体验...

    原标题:终于等到你!一加发布国内首个Android P定制系统 一加6抢先体验 目前国产手机采用的都是安卓系统,由于某些不可抗力的因素,安卓原生系统在国内很多功能都无法正常使用,因此国产手机采用谷歌的 ...

  9. MySQL和java连连看_用 JAVA 开发游戏连连看(之一)动手前的准备

    JAVA ,相信大家也不会陌生了吧, JAVA 是一门相当优秀的语言.目前 JAVA 领域 J2EE . JSP . STRUTS 等技术不知有多么的热门,他们的主要用途是用来进行企业开发, J2ME ...

最新文章

  1. 在UE4中创建CG动画 How to create a movie in Unreal Engine 4 using Metahuman
  2. delphi数组问题
  3. springcloud 文件服务器,SpringCloud传文件
  4. 不能执行已释放 script 的代码_[漏洞预警]CVE20190708远程桌面代码执行漏洞利用工具已放出...
  5. update-rc.d 更新 Linux 系统启动项 命令 用法详解
  6. 加sudo后执行.sh报错command not found
  7. Dynamic动态类型
  8. 学习webpack4 - ES6语法转化
  9. Linux内核漏洞精准检测如何做?SCA工具不能只在软件层面
  10. Solr 通过fl可以设置需要返回的字段
  11. flask request传参
  12. 中国水平板式过滤器行业市场供需与战略研究报告
  13. pdf页眉页脚设置步骤
  14. python读取excel写入mysql_使用Python读Excel数据Insert到MySQL
  15. 云计算最有利于中小企业
  16. 再见了我热爱的ACM赛场
  17. 艾肯MICU声卡安装调试教程
  18. Modown v4.11+Erphpdown10.01资源付费下载插件
  19. Batch update returned unexpected row count from update
  20. SAP《MM学习指南》操作记录----仓库盘点

热门文章

  1. 外链式样式表_引入CSS样式表(书写位置)
  2. 计算字典的个数_[LeetCode] 440. 字典序的第K小数字
  3. 光流法测试代码_高效的企业测试-工作流和代码质量(4/6)
  4. java观察者设计模式_Java中的观察者设计模式
  5. java微服务,微在哪_Java:ChronicleMap第3部分,快速微服务
  6. spring多个视图解析器_在Spring中配置多个View解析器
  7. rest web服务_在WildFly的REST Web服务中与Jackson的双向关系
  8. cloud foundry_将Spring Boot应用程序绑定到Cloud Foundry中的服务的方法
  9. wildfly_从WildFly 9(子系统)中运行OkHttpClient
  10. selenium持续集成_使用Selenium进行Spring Boot集成测试