poniedziałek, 7 maja 2018

Oracle prezentuje kompilator GraalVM

Obecnie stosowane maszyny wirtualne (VM) pracujące w środowisku produkcyjnym zapewniają wysoką wydajność opracowywanych programów tylko dla danego języka lub niewielkiego zestawu języków. Takie operacje jak kompilacja, zarządzanie pamięcią i obsługa programów narzędziowych są realizowane oddzielnie w poszczególnych językach, co narusza zasadę „nie powtarzaj się” (ang. don’t repeat yourself — DRY). 
Obciąża to nie tylko zespół wdrażający maszyny wirtualne, lecz także programistów z powodu niespójnych narzędzi, wydajności i konfiguracji. Ponadto komunikacja między programami napisanymi w różnych językach wymaga kosztownego opracowania logiki serializacji i deserializacji. Oprócz tego w wysokowydajnych maszynach wirtualnych stosowane są mocno rozbudowane procesy o wysokim zużyciu pamięci, które są trudne do wbudowania.

Aby przezwyciężyć te braki, Oracle Labs kilka lat temu rozpoczął realizację nowego projektu badawczego dotyczącego nowatorskiej architektury maszyn wirtualnych. Wizja tego projektu przewidywała stworzenie pojedynczej maszyny wirtualnej, która zapewniałaby wysoką wydajność dla wszystkich języków programowania, ułatwiając w ten sposób komunikację między programami. Nowa architektura obsługiwałaby ujednolicone narzędzia, niezależne od języka, co ułatwiałby utrzymanie oprogramowania.

Kompilator GraalVM


Oracle prezentuje GraalVM w wersji 1.0 — uniwersalną maszynę wirtualną zaprojektowaną do obsługi wielu języków. GraalVM zapewnia wysoką wydajność dla poszczególnych języków, a także zgodność operacyjną bez jakiegokolwiek obciążenia wydajności przy tworzeniu wielojęzycznych aplikacji. Zamiast konwertować struktury danych na granicach pomiędzy różnymi językami, GraalVM zezwala na używanie obiektów i macierzy bezpośrednio w językach obcych.
Przykładowe warianty stosowania przewidują np. uzyskiwanie dostępu do funkcjonalności zgromadzonych w bibliotece Java przy pomocy kodu Node.js, wywoływanie procedury statystycznej Pythona z języka Java lub użycie R do tworzenia złożonego wykresu SVG na podstawie danych zarządzanych w innym języku. Dzięki GraalVM programiści mogą swobodnie używać języka, który według nich najlepiej się nadaje do rozwiązania bieżącego zadania.

GraalVM 1.0 pozwala uruchomić:


·  języki oparte na JVM, takie jak Java, Scala, Groovy lub Kotlin
·  JavaScript (łącznie z Node.js)
·  format plików LLVM bitcode (utworzone z programów napisanych np. w C, C++ lub Rust)
·  eksperymentalne wersje Ruby, R i Pythona

GraalVM może być stosowany jako samodzielne narzędzie lub może być wbudowany w platformy takie jak OpenJDK lub Node.js, a nawet w bazy danych – takie, jak MySQL lub Oracle RDBMS. Aplikacje można elastycznie wdrażać w całym stosie przy pomocy standardowych środowisk wykonawczych GraalVM. W przypadku mechanizmów przetwarzania danych GraalVM udostępnia programom dane przechowywane w niestandardowych formatach bezpośrednio, bez żadnych kosztów konwersji.

Główną zaletą środowiska GraalVM jest narzędzie niezależne od języka, które ma zastosowanie we wszystkich wdrożeniach GraalVM. Podstawowa wersja GraalVM zapewnia niezależny od języka debuger, profiler i przeglądarkę stosu.
 

Informacje dodatkowe
  • Binarna wersja GraalVM v1.0 (przedpremierowa wersja) Community Edition (CE) stworzona na podstawie repozytorium z otwartymi kodami źródłowymi GraalVM w serwisie GitHub jest dostępna TUTAJ.
  • Uwagi i komentarze na temat proponowanej wersji można zamieszczać w serwisie GitHub w formie zgłoszeń problemów lub informacji o proponowanych zmianach (ang. pull requests).
  • Najnowsze aktualne pliki do pobrania i dokumentację można znaleźć na stronie https://www.graalvm.org.
Zachęcamy do śledzenia udoskonaleń, przysyłania próśb o ulepszenia lub do zgłaszania problemów za pośrednictwem repozytorium GitHub.
Przeczytaj ten artykuł na Oracle Developers Blog


Brak komentarzy:

Prześlij komentarz