Adopt Open JDK官方文档(八)OpenJDK 项目介绍

    xiaoxiao2024-06-21  105

    8.OpenJDK 项目介绍


    PenroseNashornJMHKullaValhalla

    对于其他项目,请参见OpenJDK http://mail.openjdk.java.net/mailman/listinfo 以及对应项目的Mailing Lists.

    8.1 Penrose


    Penrose 项目提供jigsaw 与 OSGi 环境的互操作性。

    因为原Jigsaw JDK8 EA Build 已经停止开发,Penrose 项目的源码当前处于过期状态。Penrose项目仍处于探索阶段。

    如果你对该项目由兴趣,可以查看 penrose/jigsaw 与 penrose/penrose(Demos) 两个目录.

    8.2 Nashorn


    Nashorn (发音: ˈnaːshɔɐ̯n) 项目提供基于JVM的Javascript运行时(Rhino的后续项目)。

    项目信息

    项目地址:

    http://openjdk.java.net/projects/nashorn/

    OpenJDK 8 代码库地址:

    http://hg.openjdk.java.net/jdk8/jdk8/nashorn

    OpenJDK 9 代码库地址:

    http://hg.openjdk.java.net/jdk9/jdk9/nashorn

    AvatarJS

    在Nashorn上实现的 NodeJS JVM 运行时.

    项目地址:

    https://avatar-js.java.net/https://avatar.java.net/

    代码库地址:

    https://java.net/projects/avatar-js/sources
    技术PPT

    https://github.com/neomatrix369/adoptopenjdk-getting-started-kit/blob/master/en/openjdk-projects/JavaScript_J2D.pdf包含一份来自 BGJUG 成员在Sofia Java技术会议上的PPT,该PPT介绍了闭包(Lambdas)等技术在Nashorn, AvatarJS, AvatarEE等项目上的实现。

    Blog 文章
    Java 8 Nashorn Tutorial by Benjamin Winterberg
    IDE 支持
    参见第七章节: Source Code > Loading OpenJDK in the IDE

    8.3 JMH


    JMH 是针对Java及JVM语言的微基准测试(Micro Benchmarking)工具。

    微基准测试(microbenchmark) 尝试测量代码中的”微”片段的性能。这些测试通常以纳秒级时间范围为单位来测量代码执行性能。测试代码通常划分为较小的任务来执行。

    微基准测试(microbenchmark) 并不等同于代码分析(code profiling)! 当执行代码分析时,应用通常在测试/产品环境中以完整功能进行分析。 微基准测试 只测量完整应用中的部分组件。在产品环境中,组件的测试结果并不能代表整个应用的执行结果。

    项目地址:

    http://openjdk.java.net/projects/code-tools/jmh/
    Blog 文章
    Using JMH for Java Microbenchmarking by Michael NitschingerHello JMH by Daniel Mitterdorfer

    8.4 Kulla


    Kulla 提供Java语言的命令行即时执行支持(Read Evaluate Print Loop, REPL)。

    项目官网
    http://openjdk.java.net/projects/kulla/
    项目反馈
    hackday feedback
    项目下载
    JDK 9: Binaries Kulla.jar: Adopt OpenJDK Cloudbees Build farm
    MacOS 用户

    你可以使用下述步骤设置你的Mac所使用的JDK版本,或者参见http://javapapo.blogspot.com/2013/02/multiple-java-jdks-on-your-macosx.html.

    我当前使用的是什么版本的JDK?

    // Tells you which JDKs you have $ /usr/libexec/java_home -verbose

    当我登录/启动Terminal app时,如何设置默认 JAVA_HOME?

    // You can set that export command in your ~/.profile // and/or ~/.bashrc to permanently set JAVA_HOME // for all shells/terminals/applications. export JAVA_HOME="`/usr/libexec/java_home -v '1.8*'`" // Set JAVA_HOME to be Java 9 for the terminal // window you are in export JAVA_HOME="`/usr/libexec/java_home -v '1.9*'`"
    Linux/MacOS 用户

    当安装了多个JDK环境时,如何快速切换JDK版本?

    将下述脚本添加到你的 ~/.bashrc 或 ~/.bash_profile 中:

    export JAVA9_HOME=/path/to/jdk1.9.0 export JAVA8_HOME=/path/to/jdk1.8.0 export JAVA7_HOME=/path/to/jdk1.7.0 export JAVA6_HOME=/path/to/jdk1.6.0 export JAVA_HOME=$JAVA7_HOME export JDK_HOME=$JAVA7_HOME function go9 { export JAVA_HOME=$JAVA9_HOME export JDK_HOME=$JAVA_HOME echo "Switched to $JAVA_HOME" export PATH="$JAVA_HOME/bin:$PATH" } function go8 { export JAVA_HOME=$JAVA8_HOME export JDK_HOME=$JAVA_HOME echo "Switched to $JAVA_HOME" export PATH="$JAVA_HOME/bin:$PATH" } function go7 { export JAVA_HOME=$JAVA7_HOME export JDK_HOME=$JAVA_HOME echo "Switched to $JAVA_HOME" export PATH="$JAVA_HOME/bin:$PATH" } function go6 { export JAVA_HOME=$JAVA6_HOME export JDK_HOME=$JAVA_HOME echo "Switched to $JAVA_HOME" export PATH="$JAVA_HOME/bin:$PATH" }
    快速入门

    设置好Java环境后,运行 Kulla.jar:

    set JAVA_HOME to point to /path/JDK9/ $ java -jar ~/sources/kulla/kulla.jar | Welcome to the Java REPL -- Version 0.411 | Type /help for help ->|

    获取kulla帮助选项(/help):

    -> /help Type a Java language expression, statement, or declaration. Or type one of the following commands: { . . . [Options] . . . } Supported shortcuts include: <tab> -- show possible completions for the current text Shift-<tab> -- for current method or constructor invocation, show a synopsis of the method/constructor

    命令行练习

    https://java.net/projects/adoptopenjdk/downloads/download/REPL_Tutorial.pdf

    与Java REPL相关的文章
    http://www.infoq.com/news/2014/09/repl-for-java (Java REPL, IntelliJ IDEA Java REPL plugin, Beanshell, etc…)http://redcode7.rssing.com/browser.php?indx=11248373&last=1&item=7http://www.javaworld.com/article/2601433/java-language/programmers-could-get-repl-in-official-java.htmlhttps://teamtreehouse.com/forum/installing-java-replJava REPL in 300 lines of code
    编译OpenJDK 9中的Kulla
    hg clone http://hg.openjdk.java.net/kulla/dev kulla-dev cd kulla-dev sh get_sources.sh bash configure --with-boot-jdk=/path/to/jdk1.8.0 make clean images make install <=== optional

    请确保上述编译过程中的JAVA_HOME与PATH环境变量设置正确.

    请从Maven仓库下载JLine2 Jar, 并将环境变量JLINE2LIB设置为所下载的jar存放地址.

    详细的编译步骤,请参见 http://hg.openjdk.java.net/kulla/dev/langtools/file/4933dc482be7/repl/README。

    你也可以下载 Maven POM.xml 并存放在$HOME/sources/kulla-dev/langtools/repl/下,之后执行编译。

    其他关于编译Kulla的技术链接:

    JClarity’s postArun Gupta’s posta nice and short blog post from Greg Bakos
    小技巧

    快速清空终端输出:

    MacOS: CMD-KLinux: Ctrl-K 或 Ctrl-L

    8.5 Valhalla


    Valhalla 旨在为JVM提供值类型(Value Type),运行时泛型和增强http://openjdk.java.net/jeps/193支持.

    项目官网
    http://openjdk.java.net/projects/valhalla/
    Blog 文章
    Oracle Launches Project Valhalla for Java by Ben Evanshttp://jaxenter.com/brian-goetz-introduces-new-openjdk-project-valhalla-107962.html转载自 并发编程网 - ifeve.com
    最新回复(0)