Dự án mã nguồn mở JVM của IBM giúp đẩy mạnh Ruby, Python

Ngoc Huynh

Dự án OMR nội bộ của IBM giúp duy trì JVM dễ dàng hơn ở khắp các nền tảng – và có thể giúp thúc đẩy hiệu suất cho các ngôn ngữ khác.

Một dự án mới được đề xướng bởi IBM nhằm tạo ra một bộ công cụ dành cho các runtime của ngôn ngữ lập trình, và dự án này sắp trở thành một mã nguồn mở dành cho tất cả mọi người, nó có thể được sử dụng để làm tăng tốc hiệu suất của các runtime hiện có của nhiều ngôn ngữ.

Dự án ORM lấy 39 máy ảo Java J9 của IBM, tách chúng riêng ra khỏi Java, và biến chúng thành các thành phần mà có thể được thêm vào bất kỳ bộ runtime của ngôn ngữ nào. Một điều nữa là, việc triển khai chứng minh khái niệm (PoC – Proof of Concept) dành cho Ruby và Python đang được thực hiện, với bộ biến thức của Ruby trong thời gian ngắn sẽ trở thành mã nguồn mở.

Nhặt nhạnh từng mảnh vụng

Theo bài giới thiệu ở 2015 JVM Language Summit của Mark Stoodley, lập trình phần mềm cấp cao tại IBM Canada, thì các thành phần có thể dùng lại được bao gồm các mục mà thường gặp khó khăn khi triển khai ở bất kỳ bộ runtime ngôn ngữ nào – – ví dụ như: bộ biên dịch (compiler) JIT có thể mang đến một sự thúc đẩy quan trọng dành cho hiệu suất của thời gian chạy của một ngôn ngữ.

Trong bài giới thiệu của mình, Stoodley đã mô tả lý do căn bản của IBM đối với dự án OMR: giúp việc duy trì J9 JVM dễ dàng hơn. Duy trì bất kì một ngôn ngữ nào là một việc khó khăn, đặc biệt khi làm việc với nhiều triển khai phần cứng (x86-64 vs ARM vs Power), và thậm chí là một nền tảng phần cứng đơn lẻ có thể là một mục tiêu hoạt động.

Một điều nữa là, công việc được thực hiện cho bất kỳ language runtime hiếm khi giúp đỡ công việc trên một language runtime khác. Và trong khi các cổng của ngôn ngữ đối với JVM thường có các cộng đồng thiết thực của riêng mình (chẳng hạn như Jython và Python), thì nó đi kèm với chi phí của việc chia nhỏ cộng đồng thành nhiều nhóm nhỏ khắp các triển khai ngôn ngữ khác nhau.

IBM có kế hoạch lấy những phần nhỏ VM của J9 và biến chúng thành một bộ các nguồn mã nguồn mở mà có thể phối hợp cùng với nhau trong các language runtime khác nhau. Ngoài bộ biên dịch JIT, thì các thành phần này bao gồm một bộ phân bố bộ nhớ, thread library, platform port library, thậm chí là hook framework, VM và trace engine ở cấp độ ứng dụng, và garbage collector – hầu hết trong số đó thường được tìm thấy trong bất kỳ trình biên dịch ngôn ngữ nào, nhưng phải được triển khai tách biệt nhau đối với mỗi ngôn ngữ.

Do những chức năng đó được triển khai trong J9 mà không cần bất biết rõ về Java, nên về lý thuyết chúng có thể được tái sử dụng cho bất kỳ ngôn ngữ nào. Các phần nhỏ được cung cấp bởi OMR không chỉ được thêm vào các runtime hiện có, mà còn được sử dụng để xây dựng các runtime cho toàn bộ các ngôn ngữ mới.

Tốc độ nhanh hơn

IBM đã chọn lựa hai ngôn ngữ là Ruby và Python, như là các chứng minh khái niệm đầu tiên cho phương pháp này. Cả hai đều có các triển khai phổ biến – Ruby MRI và Cpython – các triển khai này được sử dụng rộng rãi nhưng thường được làm tốt hơn bởi JVM và thậm chí là các trình biên dịch khác cho cùng ngôn ngữ. Trong một thời gian ngắn nữa triển khai Ruby sẽ là mã nguồn mở, mặc dù vẫn chưa rõ về việc liệu dự án Python có làm theo hay không.

Stoodley cho biết OMR không phải là một dự án nghiên cứu. Nhiều nỗ lực để làm tăng tốc các ngôn ngữ hiện có chủ yếu tập trung vào việc tạo ra một runtime mới, chẳng hạn như HHVM của PHP hay PyPy của Python. Nếu thực hiện đúng, thì OMR có thể mang lại nhiều lợi ích không chỉ cho các dự án này mà còn cho các trình biên dịch của các ngôn ngữ.

Trong thời gian ngắn, có khả năng các phân nhánh sẽ hiển thị việc sử dụng các thành phần OMR, và sẽ là căn cứ để chứng minh làm thế nào OMR có thể được tích hợp trở lại các dự án cốt lõi.

Chia sẻ bài viết ngay

Nguồn bài viết : http://www.infoworld.com/