Adopt Open JDK官方文档(八)OpenJDK 项目介绍
原文地址 译者:bobwenx (bobwenx@gmail.com)
8.OpenJDK 项目介绍
- Penrose
- Nashorn
- JMH
- Kulla
- Valhalla
对于其他项目,请参见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 Nitschinger
- Hello 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_HOMEfunction go9 {export JAVA_HOME=$JAVA9_HOMEexport JDK_HOME=$JAVA_HOMEecho "Switched to $JAVA_HOME"export PATH="$JAVA_HOME/bin:$PATH"
}function go8 {export JAVA_HOME=$JAVA8_HOMEexport JDK_HOME=$JAVA_HOMEecho "Switched to $JAVA_HOME"export PATH="$JAVA_HOME/bin:$PATH"
}function go7 {export JAVA_HOME=$JAVA7_HOMEexport JDK_HOME=$JAVA_HOMEecho "Switched to $JAVA_HOME"export PATH="$JAVA_HOME/bin:$PATH"
}function go6 {export JAVA_HOME=$JAVA6_HOMEexport JDK_HOME=$JAVA_HOMEecho "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=7
- http://www.javaworld.com/article/2601433/java-language/programmers-could-get-repl-in-official-java.html
- https://teamtreehouse.com/forum/installing-java-repl
- Java 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 post
- Arun Gupta’s post
- a nice and short blog post from Greg Bakos
小技巧
快速清空终端输出:
- MacOS: CMD-K
- Linux: Ctrl-K 或 Ctrl-L
8.5 Valhalla
Valhalla 旨在为JVM提供值类型(Value Type),运行时泛型和增强http://openjdk.java.net/jeps/193支持.
Adopt Open JDK官方文档(八)OpenJDK 项目介绍相关推荐
- Adopt Open JDK官方文档(二)如何使用导航和取得进步?
2.如何使用导航和取得进步 在黑客日和讲习班开始之前我需要做些什么呢 来之前你应该准备好你的笔记本电脑并搭建好当天需要的环境 检查硬件要求/操作系统/软件要求 下载支撑软件 搭建或者下载虚拟机 搭建或 ...
- Adopt Open JDK官方文档(四)基于虚拟机的编译环境
4.基于虚拟机的编译环境 准备工作 编译你自己的虚拟机 编译你自己的轻量级虚拟机 在Host 与 Guest VM 之间共享文件 适用于 OpenJDK 8 的Vagrant Puppet 环境 4. ...
- 翻译Houdini官方文档:PDG/TOPs介绍
官方文档:Introduction to TOPs 总览 使用TOPs工作 TOP节点UI Processors(处理器) Mappers partitions(分割) Schedulers(调度器) ...
- 《Apache Flink官方文档》 Apache Flink介绍
下面是关于Apache Flink(以下简称Filnk)框架和流式计算的概述.为了更专业.更技术化的介绍,在Flink文档中推荐了一些"概念性"的文章. 1.无穷数据集的持续计算 ...
- Pygame 官方文档 - Tutorials - Surfarray模块介绍(Surfarray Introduction)
Surfarray模块介绍(Surfarray Introduction) Author: Pete Shinners Contact: pete@shinners.org 介绍(Introducti ...
- Orleans 2.0 官方文档 —— 1.1 概览 - 介绍
介绍 Orleans是一个框架,它提供了一种简单的方法来构建分布式大规模计算应用程序,而无需学习和应用复杂的并发或其他扩展模式. 背景 云应用程序和服务本质上是并行和分布式的.它们也具有交互性和动态性 ...
- Axon Framework官方文档(五)
5.Command Model 在基于CQRS的应用程序中,一个领域模型(由Eric Evans和Martin Fowler提出的概念)可以是一种非常强大的机制,它可以利用状态更改的验证和执行所涉及的 ...
- 翻译Houdini官方文档:PDG教程之HDA处理器
官方文档:PDG Tutorial 3 HDA Processor Part 1 关于这个教程 你将会学到什么 步骤 0 - 拷贝所需的HDA文件 步骤 1 - 观察HDA 步骤 2 - 设置PDG输 ...
- ros2_control官方文档
ros2_control官方文档 鱼香ROS介绍: 鱼香ROS是由机器人爱好者共同组成的社区,欢迎一起参与机器人技术交流. 进群加V:fishros2048 文章信息: 标题:ros2_control ...
- Unity3D 官方文档 UGUI总览 可互动组件的介绍
版本:unity 5.6 语言:C# 总起: 可互动组件包括按钮.复选框.滑块.滚动条等,本身它们是不可见的,但它们内部有可视化组件. 做UI的时候,如果不需要什么特效本身使用onClick.Add ...
最新文章
- C#学习-EF在三层中使用
- 学计算机excel就很好吗,零基础学习excel小技巧
- 删除Win7隐藏的系统分区
- 1355. 母亲的牛奶【一般 / DFS爆搜】
- centos查看当前目录文件夹的大小与tar解压到指定目录
- 从零点五开始用Unity做半个2D战棋小游戏(六)
- bulk这个词的用法_15、形容词与副词(二)比较的用法
- gentry同态加密算法_基于Gentry全同态加密算法公钥个数优化的研究
- docker 安装hadoop
- 我的站(艾网---城市生活新门户)重新上线了
- 《Web测试囧事》——1.3 测试Web Service能否正常提供JSON数据
- windows下编译librtmp库
- hp android 计算器,惠普图形计算器(HP Prime Graphing Calculator)
- 再次携号转网_全国携号转网真来了!这些坑一定要小心!
- 【DIY】制作一个刷卡进门装置
- Cadence Allegro 板框倒角设置方法
- 在线教育平台建立付费会员体系
- 用新版的Yahoo宝贝鱼(Babel Fish)做自己的翻译器(防乱码)
- python隐秘的角落——笛卡尔之心
- css3实现各种角度的三角形