JIT derleyicisine sahip bir JDK var mı?


24

OpenJDK Pi'yi başarıyla derler ve çalıştırır, fakat bulduğum tek versiyon JIT'siz versiyondur. Oracle, diğer ARM sürümleri için böyle bir JDK sağlar, ancak ARMv6'yı sağlamaz. Bu arada JDK'nın böyle bir versiyonunu çalıştırmanın bir yolu var mı?


Dağıtım nedir?
Jivings

Şu anda Debian sıkılıyor, ancak bu durumun yardımı olacaksa, değişmekten korkmadım!
berry120

OpenJDK sürümünü resmi depoya kuramıyor musunuz?
Jivings

@Jivings Yup, şu an kullandığım şey bu. Ancak bu sürüm bir JIT ile gelmiyor (bu yüzden soru!)
berry120

Üzgünüm :) O zaman neden JIT’in olmadığına dair hiçbir fikrim yok. Tuhaf bir karar gibi görünüyor, bunun için herhangi bir gerekçe buldunuz mu?
Jivings

Yanıtlar:


15

Oracle şimdi (Java 7u6'dan itibaren) Pi’de tam AWT / Swing desteği ile çalışan JIT’li bir JDK’yı piyasaya sürdü. Ayrıca JVMTI'yı destekler (kakao yalnızca kısmi bir desteğe sahiptir.) Basın bülteni burada .

Greenfoot ile çalıştığını doğruladım ve düz (JIT olmayan) bir OpenJDK yapısının beğenisine kıyasla büyük bir hızlanma sağlıyor.

Yazma sırasında zor kayan noktayı desteklemiyor ve bu nedenle yalnızca sabit kayan nokta kullanan Raspbian gibi dağıtımlarla çalışmaz - bu, gelecekteki bir sürüm için planlanmıştır.

GÜNCELLEME: Darren'in belirttiği gibi, bir JDK8 önizleme sürümü biçiminde ARM için artık zorlu bir sürüm yayınlandı, burada bulabilirsiniz .

GÜNCELLEME 2: Sabit şamandıra artık JDK7'de desteklenmektedir.


Hangi dağıtımları destekliyor?
Zoot

2
@Zoot Debian sıkma cezası ile kullandım - softfloat kullanabilen herhangi bir Linux dağıtımını desteklemelidir.
berry120


4

Oracle, özellikle Pi'de sabit diskli Raspbian desteği içeren ARM için Java JDK8'in geliştirici bir önizlemesini yayınladı. Çalışıyor ve bazı kayan nokta yoğun hesaplamalar için OpenJDK'den yaklaşık 20 kat daha hızlı olduğunu buldum. http://jdk8.java.net/fxarmpreview/


Beni yendin! Hemen göndermek
üzereydim

3

Rasbian'da "kod kopyalama-JIT" içeren JamVM kullanabilirsiniz.

apt-get install icedtea-7-jre-jamvm

JamVM şu anda Rasbian'da bir JIT içeren en hızlı ve en kararlı JVM'dir.

Avian ayrıca bir JIT içeren Rasbian'da da desteklenmektedir. Manuel olarak oluşturmanız gerekecektir: http://labb.zafena.se/?p=630

Avian'ın Debian SID kaynağından inşa edildiğinde Raspbian'da görünmesini bekliyorum. Avian şu anda Debian SID'de jvm-7-avian-jrepaket içinde deneysel olarak bulunuyor .

Hem Avian hem de JamVM, OpenJDK-7 sınıflarıyla birlikte çalışır, böylece hem javac hem de java gibi tüm java rampalarını hızlandırmak için kullanabilirsiniz. dosya, /etc/java-7-openjdk/jvm-armhf.cfghangi JVM'nin Rasbian'daki openjdk 7 içinde varsayılan olarak kullanılacağını belirler.

Java başlatıcılarına ayrı ayrı hangi jvm'nin kullanılacağını da söyleyebilirsiniz:

java -jamvm

javac -J-jamvm

2

Oracle, Raspberry Pi'nin ARM mimarisi için Java 8 ve Java 7'nin tam Sürümünü (artık önizlemesini görmedi) piyasaya sürdü: Java 8'e bağlantı .

Komut satırından da kullanabilirsiniz:

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

1

OpenJDK 7'yi, X11 destekli bir kurulum ve Swing / AWT çalışması için JIT içeren Java JDK8'den JVM ile birleştirmek mümkündür.

"Classpath" istisnası olan JNI arabirimi, JVM ve çalışma ortamı ortam sınıflarını açıkça ayırır. JavaFX 8 önizlemesinden Client Hotspot'u (jre / lib / arm / client / libjvm.so) Rasbian derlenmiş OpenJDK 7 Runtime ortamı sınıfları ve java rampaları (/ usr / lib / jvm / java-7- ile birlikte kullanıyorsanız) openjdk-armhf) aşağıdaki kurulum ve avantajlardan yararlanabilirsiniz:

  • Hotspot Client JIT (JavaFX 8 önizlemesinden)
  • Swing / AWT desteği (openjdk-7-jre paketindeki OpenJDK sınıflarını kullanarak)
  • pulse-audio desteği (openjdk-7-jre ve openjdk-7-jre-başsız paketinden IcedTea pulse-java)
  • icedtea-web kullanarak web tarayıcı uygulaması desteği (icedtea-7 eklenti paketinden)
  • icedtea-web'i kullanan bir JNLP başlatıcısı (icedtea-7 eklenti paketinden)
  • OpenJDK java rampaları tarafından armhf JNI otomatik algılama (OpenJDK java rampaları, armhf'a özel sistem kitaplığı yolunu java.library.path dosyasına ekler). / Usr / lib / arm-linux-gnueabihf yolunu java.library.path dosyasına dahil etmek, Pi4J GPIO kütüphanesi ve JogAmp gluegen-rt JOGL / JOAL gibi java kütüphanelerinin bir armhf linux sisteminde çalıştığını doğru bir şekilde tespit etmesine olanak sağlar ve daha sonra, JLI uygulaması yerine armhf JNI uygulamasını yükleyin.
  • GlassJe ve Tomcat gibi JavaEE sunucusu uygulamalarında baş üstü OpenJDK sınıflarını kullanarak görüntü işleme ve yazdırma desteği.

Kurmak:

İndirin jdk-8-ea-b36e-linux-kol-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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.