Adopt Open JDK官方文檔(八)OpenJDK 項目介紹
8.OpenJDK 項目介紹
對於其他項目,請參見OpenJDK https://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的後續項目)。
項目信息
項目地址:
OpenJDK 8 代碼庫地址:
OpenJDK 9 代碼庫地址:
AvatarJS
在Nashorn上實現的 NodeJS JVM 運行時.
項目地址:
代碼庫地址:
技術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 文章
IDE 支持
8.3 JMH
JMH 是針對Java及JVM語言的微基準測試(Micro Benchmarking)工具。
微基準測試(microbenchmark) 嚐試測量代碼中的”微”片段的性能。這些測試通常以納秒級時間範圍為單位來測量代碼執行性能。測試代碼通常劃分為較小的任務來執行。
微基準測試(microbenchmark) 並不等同於代碼分析(code profiling)! 當執行代碼分析時,應用通常在測試/產品環境中以完整功能進行分析。 微基準測試 隻測量完整應用中的部分組件。在產品環境中,組件的測試結果並不能代表整個應用的執行結果。
項目地址:
Blog 文章
8.4 Kulla
Kulla 提供Java語言的命令行即時執行支持(Read Evaluate Print Loop, REPL)。
項目官網
項目反饋
- hackday feedback
項目下載
- JDK 9: Binaries
- Kulla.jar: Adopt OpenJDK Cloudbees Build farm
MacOS 用戶
你可以使用下述步驟設置你的Mac所使用的JDK版本,或者參見https://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相關的文章
- https://www.infoq.com/news/2014/09/repl-for-java (Java REPL, IntelliJ IDEA Java REPL plugin, Beanshell, etc…)
- https://redcode7.rssing.com/browser.php?indx=11248373&last=1&item=7
- https://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 https://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存放地址.
詳細的編譯步驟,請參見 https://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),運行時泛型和增強https://openjdk.java.net/jeps/193支持.
項目官網
Blog 文章
- Oracle Launches Project Valhalla for Java by Ben Evans
- https://jaxenter.com/brian-goetz-introduces-new-openjdk-project-valhalla-107962.html
- 轉載自 並發編程網 - ifeve.com
最後更新:2017-05-22 15:33:52