มี JDK พร้อมคอมไพเลอร์ JIT หรือไม่?


24

OpenJDK รวบรวมและทำงานกับ Pi ได้สำเร็จ แต่รุ่นเดียวที่ฉันพบคือรุ่นที่ไม่มี JIT Oracle นำเสนอ JDK สำหรับ ARM รุ่นอื่น แต่ไม่ใช่ ARMv6 มีวิธีใดบ้างที่จะเปิดใช้งาน JDK เวอร์ชันดังกล่าวและทำงานในระหว่างนี้?


distro คืออะไร?
Jivings

เดเบียนบีบตัวในปัจจุบันแม้ว่าฉันจะไม่ต้องกังวลกับการเปลี่ยนแปลงมากนักถ้ามันจะช่วยสถานการณ์!
berry120

คุณไม่สามารถติดตั้งเวอร์ชั่น OpenJDK ใน repo อย่างเป็นทางการได้หรือไม่?
Jivings

@Jivings Yup นั่นคือสิ่งที่ฉันใช้ในขณะนี้ แต่เวอร์ชันนั้นไม่ได้มาพร้อมกับ JIT (ดังนั้นคำถาม!)
berry120

ขออภัย :) ฉันไม่รู้ว่าทำไมถึงไม่มี JIT ดูเหมือนว่าจะมีการตัดสินใจที่แปลกประหลาดคุณได้พบเหตุผลใดบ้างหรือไม่?
Jivings

คำตอบ:


15

Oracle ได้เปิดตัวตอนนี้ (ตั้งแต่ Java 7u6) JDK กับ JIT ที่ทำงานบน Pi ด้วยการสนับสนุน AWT / Swing แบบเต็ม นอกจากนี้ยังสนับสนุน JVMTI (โกโก้มีเพียงการสนับสนุนบางส่วน.) แถลงข่าวที่นี่

ฉันตรวจสอบแล้วว่าใช้งานได้กับGreenfootและให้ความเร็วที่รวดเร็วกว่าเมื่อเปรียบเทียบกับการสร้าง OpenJDK แบบธรรมดา (ไม่ใช่ JIT)

ในขณะที่เขียนมันไม่รองรับจุดลอยตัวที่ยากและดังนั้นจะไม่ทำงานกับการแจกแจงเช่น Raspbian ที่ใช้ hard float เท่านั้น - อย่างไรก็ตามมีการวางแผนสำหรับการเปิดตัวในอนาคต

UPDATE: ในฐานะที่เป็นคาร์เรนชี้ให้เห็นรุ่นลอยอย่างหนักขณะนี้ได้รับการปล่อยตัวออกมา ARM ในรูปแบบของปล่อยตัวอย่าง JDK8 คุณสามารถค้นหาได้ที่นี่

ปรับปรุง 2: ฮาร์ดลอยได้รับการสนับสนุนใน JDK7


ดิสทริบิวชันใดบ้างที่สนับสนุน
Zoot

2
@ Zoot ฉันเคยใช้กับ Debian squeeze fine - มันควรสนับสนุนการกระจาย Linux ใด ๆ ที่สามารถใช้ softfloat
berry120

6

IcedTea-6-JRE-โกโก้แพคเกจประกอบด้วยคอมไพเลอร์ JIT และมีรายงานทำงานบน RasPi

ฉันไม่ได้ลองด้วยตัวเอง


นั่นไม่ใช่แค่ JRE มากกว่า JDK ใช่มั้ย
berry120

@ berry120: มันอยู่ใน JRE ที่จำเป็นต้องใช้ JIT ไม่สำคัญว่า JIT จะถูกใช้งานเมื่อรวบรวมโปรแกรมหรือไม่
finnw

อ่าจุดดี จะลองดู :-)
berry120

1
โกโก้ JIT ดูเหมือนจะไม่ทำงานอย่างถูกต้องอย่างน้อยใน Raspbian และดูเหมือนจะไม่ง่ายนัก
Darren Wilkinson

4

ตอนนี้ออราเคิลได้เปิดตัวตัวอย่างของนักพัฒนาของ Java JDK8 สำหรับ ARM ซึ่งรวมถึงการสนับสนุน Raspbian สำหรับ hard-float บน Pi โดยเฉพาะ มันใช้งานได้และฉันพบว่ามันจะเร็วกว่า OpenJDK ประมาณ 20 เท่าสำหรับการคำนวณบางอย่างที่เป็นทศนิยม http://jdk8.java.net/fxarmpreview/


คุณเอาชนะฉันมัน! ฉันเพิ่งจะโพสต์นั้น :-)
berry120

3

บน 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

2

ออราเคิลเปิดตัวเต็มรูปแบบรุ่น (ไม่มีตัวอย่างอีกต่อไป) ของ Java 8 และ Java 7 สำหรับสถาปัตยกรรม ARM ของราสเบอร์รี่ Pi: เชื่อมโยงไปยัง Java 8

คุณยังสามารถใช้จากบรรทัดคำสั่ง:

sudo apt-get update
sudo apt-get install oracle-java8-jdk

1

เป็นไปได้ที่จะรวม 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) คุณจะได้รับการตั้งค่าและสิทธิประโยชน์ต่อไปนี้:

  • ฮอตสปอตไคลเอนต์ JIT (จากตัวอย่าง JavaFX 8)
  • รองรับ Swing / AWT (ใช้คลาส OpenJDK จากแพ็คเกจ openjdk-7-jre)
  • การสนับสนุนระบบพัลส์เสียง (IcedTea pulse-java จากแพ็คเกจ openjdk-7-jre และ openjdk-7-jre-headless)
  • รองรับแอปเพล็ตผ่านเว็บเบราว์เซอร์โดยใช้ icedtea-web (จากแพ็คเกจ icedtea-7-plugin)
  • JNLP ตัวเรียกใช้ javaws โดยใช้ icedtea-web (จากแพ็คเกจ icedtea-7-plugin)
  • การตรวจสอบ armhf JNI อัตโนมัติโดยตัวเรียกใช้งาน OpenJDK java (ตัวเรียกใช้งาน OpenJDK java จะเพิ่มพา ธ ไลบรารีระบบ armhf เฉพาะลงใน java.library.path) โดยการรวมพา ธ / usr / lib / arm-linux-gnueabihf เข้าสู่ java.library.path อนุญาตให้ไลบรารีของจาวาเช่นไลบรารี Pi4J GPIO และ JogAmp gluegen-rt JOGL / JOAL ตรวจพบว่ากำลังทำงานบนระบบ armhf linux จากนั้นโหลดการใช้ armhf JNI แทนการใช้ armel JNI
  • รองรับการประมวลผลและการพิมพ์ภาพในแอพพลิเคชันเซิร์ฟเวอร์ JavaEE เช่น glassfish และ tomcat โดยใช้ headfull OpenJDK Class

ติดตั้ง:

ดาวน์โหลด 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.