Có JDK với trình biên dịch JIT có sẵn không?


24

OpenJDK biên dịch và chạy trên Pi thành công, nhưng phiên bản duy nhất tôi tìm thấy là phiên bản không có JIT. Oracle cung cấp JDK như vậy cho các phiên bản ARM khác, nhưng không phải ARMv6. Có cách nào để có được một phiên bản JDK như vậy và chạy trong thời gian này không?


Bản phân phối là gì?
Jivings

Debian siết chặt hiện tại, mặc dù tôi không quá lo lắng về việc thay đổi nếu điều này sẽ giúp ích cho tình hình!
berry120

Bạn có thể không cài đặt phiên bản OpenJDK trong repo chính thức không?
Jivings

@Jivings Yup, đó là những gì tôi đang sử dụng tại thời điểm này. Nhưng phiên bản đó không đi kèm với JIT (vì vậy câu hỏi!)
berry120

Xin lỗi :) Tôi không biết tại sao điều đó không có JIT. Có vẻ là một quyết định kỳ lạ, bạn đã tìm thấy bất kỳ lý do cho nó?
Jivings

Câu trả lời:


15

Oracle hiện đã phát hành (kể từ Java 7u6) một JDK với JIT hoạt động trên Pi với hỗ trợ AWT / Swing đầy đủ. Nó cũng hỗ trợ JVMTI (cacao chỉ có hỗ trợ một phần.) Thông cáo báo chí tại đây .

Tôi đã xác minh rằng nó hoạt động với Greenfoot và cung cấp một tốc độ nhanh so với các bản dựng OpenJDK đơn giản (không phải JIT).

Tại thời điểm viết bài, nó không hỗ trợ điểm nổi cứng và vì vậy sẽ không hoạt động với các bản phân phối như Raspbian chỉ sử dụng phao cứng - tuy nhiên điều này được lên kế hoạch cho một bản phát hành trong tương lai.

CẬP NHẬT: Như Darren đã chỉ ra, một phiên bản float cứng hiện đã được phát hành cho ARM dưới dạng bản phát hành xem trước JDK8, bạn có thể tìm thấy nó ở đây .

CẬP NHẬT 2: Phao cứng hiện được hỗ trợ trong JDK7.


Nó hỗ trợ phân phối nào?
Zoot

2
@Zoot Tôi đã sử dụng nó với Debian bóp tốt - nó sẽ hỗ trợ bất kỳ bản phân phối Linux nào có thể sử dụng softfloat.
berry120

6

Gói icedtea-6-jre-cacao chứa trình biên dịch JIT và được báo cáo là hoạt động trên RasPi .

Tôi đã không thử bản thân mình.


Có phải đó không chỉ là JRE chứ không phải JDK?
berry120

@ berry120: Đó là trong JRE mà JIT là cần thiết. Việc JIT được sử dụng khi chương trình được biên dịch không thành vấn đề.
vây

Ah, điểm tốt. Sẽ dùng thử :-)
berry120

1
JIT cacao dường như không hoạt động đúng, ít nhất là trên Raspbian và dường như không có cách khắc phục dễ dàng.
Darren Wilkinson

4

Oracle hiện đã phát hành bản xem trước dành cho nhà phát triển của Java JDK8 cho ARM, đặc biệt bao gồm hỗ trợ cho Raspbian nổi trên Pi. Nó hoạt động và tôi đã thấy nó nhanh hơn khoảng 20 lần so với OpenJDK đối với các tính toán chuyên sâu về dấu phẩy động nhất định. http://jdk8.java.net/fxarmpreview/


Bạn đánh bại tôi vào nó! Tôi vừa định đăng bài đó :-)
berry120

3

Trên Rasbian, bạn có thể sử dụng JamVM bao gồm "sao chép mã-JIT"

apt-get install icedtea-7-jre-jamvm

JamVM hiện là JVM nhanh nhất và ổn định nhất bao gồm JIT trên Rasbian.

Avian cũng được hỗ trợ trên Rasbian cũng bao gồm JIT. Bạn sẽ phải xây dựng thủ công: http://labb.zafena.se/?p=630

Tôi hy vọng Avian sẽ xuất hiện trong Raspbian khi nó được xây dựng từ nguồn Debian SID. Avian hiện đang tồn tại trong thử nghiệm Debian SID bên trong jvm-7-avian-jregói.

Cả Avian và JamVM đều hoạt động kết hợp với các lớp OpenJDK-7 để bạn có thể sử dụng cả hai để tăng tốc tất cả các trình khởi chạy java như javac và java. tệp /etc/java-7-openjdk/jvm-armhf.cfgxác định JVM nào được sử dụng theo mặc định bên trong openjdk 7 trên Rasbian.

Bạn cũng có thể nói riêng các trình khởi chạy java mà jvm sẽ sử dụng:

java -jamvm

javac -J-jamvm

2

Oracle đã phát hành Phiên bản đầy đủ (không còn xem trước) của Java 8 và Java 7 cho kiến ​​trúc ARM của Raspberry Pi: liên kết với Java 8 .

Bạn cũng có thể sử dụng từ dòng lệnh:

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

1

Có thể kết hợp OpenJDK 7 với JVM từ Java JDK8 bao gồm JIT để có được thiết lập với X11 được hỗ trợ và hoạt động Swing / AWT.

Giao diện JNI, với ngoại lệ "Classpath", phân tách rõ ràng JVM và các lớp môi trường thời gian chạy. Nếu bạn sử dụng Điểm truy cập khách (jre / lib / arm / client / libjvm.so) từ bản xem trước JavaFX 8 kết hợp với các lớp môi trường Thời gian chạy OpenJDK 7 được biên dịch và trình khởi chạy java (/ usr / lib / jvm / java-7- openjdk-armhf) bạn sẽ nhận được các thiết lập và lợi ích sau:

  • JIT Hotspot Client (từ bản xem trước JavaFX 8)
  • Hỗ trợ swing / AWT (sử dụng các lớp OpenJDK từ gói openjdk-7-jre)
  • hỗ trợ âm thanh xung (IcedTea Pulse-java từ gói openjdk-7-jre và openjdk-7-jre-headless)
  • hỗ trợ applet trình duyệt web bằng icedtea-web (từ gói plugin icedtea-7)
  • trình khởi chạy javaws JNLP bằng icedtea-web (từ gói plugin icedtea-7)
  • armhf JNI tự động phát hiện bởi các trình khởi chạy java OpenJDK (các trình khởi chạy java OpenJDK thêm đường dẫn thư viện hệ thống cụ thể của armhf vào java.l Library.path). Bằng cách bao gồm đường dẫn / usr / lib / arm-linux-gnuispihf vào java.l Library.path cho phép các thư viện java như thư viện GP4 của Pi4J và JOA / rt JOGL / JOAL phát hiện chính xác rằng nó đang chạy trên hệ thống linux armhf và sau đó tải triển khai JNI armhf thay vì triển khai JNI armel.
  • Hỗ trợ xử lý và in ảnh bên trong các ứng dụng máy chủ JavaEE, chẳng hạn như cá thủy tinh và tomcat, bằng cách sử dụng các lớp OpenJDK hoàn hảo.

Thiết lập:

Tải xuống jdk-8-ea-b36e-linux-arm-hflt-29_nov_2012.tar.gz từ 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.