OpenJDK รวบรวมและทำงานกับ Pi ได้สำเร็จ แต่รุ่นเดียวที่ฉันพบคือรุ่นที่ไม่มี JIT Oracle นำเสนอ JDK สำหรับ ARM รุ่นอื่น แต่ไม่ใช่ ARMv6 มีวิธีใดบ้างที่จะเปิดใช้งาน JDK เวอร์ชันดังกล่าวและทำงานในระหว่างนี้?
OpenJDK รวบรวมและทำงานกับ Pi ได้สำเร็จ แต่รุ่นเดียวที่ฉันพบคือรุ่นที่ไม่มี JIT Oracle นำเสนอ JDK สำหรับ ARM รุ่นอื่น แต่ไม่ใช่ ARMv6 มีวิธีใดบ้างที่จะเปิดใช้งาน JDK เวอร์ชันดังกล่าวและทำงานในระหว่างนี้?
คำตอบ:
Oracle ได้เปิดตัวตอนนี้ (ตั้งแต่ Java 7u6) JDK กับ JIT ที่ทำงานบน Pi ด้วยการสนับสนุน AWT / Swing แบบเต็ม นอกจากนี้ยังสนับสนุน JVMTI (โกโก้มีเพียงการสนับสนุนบางส่วน.) แถลงข่าวที่นี่
ฉันตรวจสอบแล้วว่าใช้งานได้กับGreenfootและให้ความเร็วที่รวดเร็วกว่าเมื่อเปรียบเทียบกับการสร้าง OpenJDK แบบธรรมดา (ไม่ใช่ JIT)
ในขณะที่เขียนมันไม่รองรับจุดลอยตัวที่ยากและดังนั้นจะไม่ทำงานกับการแจกแจงเช่น Raspbian ที่ใช้ hard float เท่านั้น - อย่างไรก็ตามมีการวางแผนสำหรับการเปิดตัวในอนาคต
UPDATE: ในฐานะที่เป็นคาร์เรนชี้ให้เห็นรุ่นลอยอย่างหนักขณะนี้ได้รับการปล่อยตัวออกมา ARM ในรูปแบบของปล่อยตัวอย่าง JDK8 คุณสามารถค้นหาได้ที่นี่
ปรับปรุง 2: ฮาร์ดลอยได้รับการสนับสนุนใน JDK7
IcedTea-6-JRE-โกโก้แพคเกจประกอบด้วยคอมไพเลอร์ JIT และมีรายงานทำงานบน RasPi
ฉันไม่ได้ลองด้วยตัวเอง
ตอนนี้ออราเคิลได้เปิดตัวตัวอย่างของนักพัฒนาของ Java JDK8 สำหรับ ARM ซึ่งรวมถึงการสนับสนุน Raspbian สำหรับ hard-float บน Pi โดยเฉพาะ มันใช้งานได้และฉันพบว่ามันจะเร็วกว่า OpenJDK ประมาณ 20 เท่าสำหรับการคำนวณบางอย่างที่เป็นทศนิยม http://jdk8.java.net/fxarmpreview/
บน Rasbian คุณสามารถใช้ JamVM ที่มี "code-copying-JIT"
apt-get install icedtea-7-jre-jamvm
JamVM ปัจจุบันเป็น JVM ที่เร็วและเสถียรที่สุดซึ่งรวม JIT บน Rasbian
นกยังได้รับการสนับสนุนใน Rasbian ที่มี JIT ด้วย คุณจะต้องสร้างมันเอง: http://labb.zafena.se/?p=630
ฉันคาดว่า Avian จะปรากฏใน Raspbian เมื่อมันถูกสร้างขึ้นจากแหล่ง Debian SID ปัจจุบันมีนกอยู่ใน Debian SID ที่อยู่ในjvm-7-avian-jre
ชุดทดลอง
ทั้ง Avian และ JamVM ทำงานร่วมกับคลาส OpenJDK-7 เพื่อให้คุณสามารถใช้ทั้งคู่เพื่อเร่งตัวเรียกใช้จาวาทั้งหมดเช่น javac และ java ไฟล์/etc/java-7-openjdk/jvm-armhf.cfg
จะพิจารณาว่าจะใช้ JVM ใดเป็นค่าเริ่มต้นใน openjdk 7 บน Rasbian
คุณยังสามารถบอกตัวเรียกใช้งานจาวาได้ทีละตัวว่าจะใช้ jvm:
java -jamvm
javac -J-jamvm
ออราเคิลเปิดตัวเต็มรูปแบบรุ่น (ไม่มีตัวอย่างอีกต่อไป) ของ Java 8 และ Java 7 สำหรับสถาปัตยกรรม ARM ของราสเบอร์รี่ Pi: เชื่อมโยงไปยัง Java 8
คุณยังสามารถใช้จากบรรทัดคำสั่ง:
sudo apt-get update
sudo apt-get install oracle-java8-jdk
เป็นไปได้ที่จะรวม OpenJDK 7 กับ JVM จาก Java JDK8 ที่มี JIT เพื่อรับการตั้งค่าด้วย X11 ที่สนับสนุนและ Swing / AWT ทำงาน
อินเตอร์เฟส JNI พร้อมข้อยกเว้น "Classpath" แยก JVM และคลาสสภาวะแวดล้อมรันไทม์อย่างชัดเจน หากคุณใช้ไคลเอ็นต์ฮอตสปอต (jre / lib / arm / client / libjvm.so) จากการแสดงตัวอย่าง JavaFX 8 ร่วมกับคลาสสภาพแวดล้อมรันไทม์ของ OpenJDK 7 ที่คอมไพล์ด้วย Rasbian และตัวเรียกใช้จาวา (/ usr / lib / jvm / java-7- openjdk-armhf) คุณจะได้รับการตั้งค่าและสิทธิประโยชน์ต่อไปนี้:
ติดตั้ง:
ดาวน์โหลด jdk-8-ea-b36e-linux-arm-hflt-29_nov_2012.tar.gz จาก http://jdk8.java.net/fxarmpreview/index.html
# Install openjdk-7 and the icedtea-web browser plugin
sudo apt-get install openjdk-7-jdk icedtea-7-plugin
# Extract the Oracle Client Hotspot JVM from the JavaFX 8 preview
tar --extract --verbose --file=jdk-8-ea-b36e-linux-arm-hflt-29_nov_2012.tar.gz jdk1.8.0/jre/lib/arm/client
# Place the client hotspot dir containing the libjvm.so inside the OpenJDK 7 jre/lib/arm folder
sudo mv jdk1.8.0/jre/lib/arm/client /usr/lib/jvm/java-7-openjdk-armhf/jre/lib/arm/oracle
# Configure the OpenJDK Runtime to use the Oracle client Hotspot JVM dir
# This sed command places -oracle KNOWN at the first line of jvm-armhf.cfg
sudo sed -i -e "1i\\-oracle KNOWN" /etc/java-7-openjdk/jvm-armhf.cfg
java -version
java version "1.7.0_07" <--- This is the OpenJDK 7 Update version
OpenJDK Runtime Environment (IcedTea7 2.3.2) (7u7-2.3.2a-1+rpi1) <--- This is the OpenJDK 7 Runtime version
Java HotSpot(TM) Client VM (build 25.0-b04, mixed mode) <--- This is the Oracle Client Hotspot JVM version