{"id":727,"date":"2021-05-01T07:23:40","date_gmt":"2021-05-01T05:23:40","guid":{"rendered":"https:\/\/www.voldrich.net\/?p=727"},"modified":"2021-05-02T12:53:27","modified_gmt":"2021-05-02T10:53:27","slug":"graal-basics","status":"publish","type":"post","link":"https:\/\/www.voldrich.net\/index.php\/2021\/05\/01\/graal-basics\/","title":{"rendered":"Graal basics"},"content":{"rendered":"\n<p>I spent last year designing and implementing javascript scripting support in our Java\/Spring backend with the help of GraalVM and its polyglot support. I fell in love with Graal, as it brings quite a lot of features and performance improvements to Java JVM. Will focus on basics of Graal Polyglot capabilities in this article.<\/p>\n\n\n\n<p>I&#8217;m not going to write about what is Graal, others have done this better:<\/p>\n\n\n\n<p><a href=\"https:\/\/www.graalvm.org\/why-graalvm\/\">https:\/\/www.graalvm.org\/why-graalvm\/<\/a><br><a href=\"https:\/\/www.graalvm.org\/reference-manual\/embed-languages\/\">https:\/\/www.graalvm.org\/reference-manual\/embed-languages\/<\/a><\/p>\n\n\n\n<p>Nice article to read is also <a href=\"https:\/\/github.com\/chrisseaton\/graalvm-ten-things\/blob\/master\/README.md\">Top 10 Things To Do With GraalVM<\/a>.<\/p>\n\n\n\n<p>Make sure you follow their twitter and blog:<br><a href=\"https:\/\/twitter.com\/graalvm\">https:\/\/twitter.com\/graalvm<\/a><br><a href=\"https:\/\/medium.com\/graalvm\">https:\/\/medium.com\/graalvm<\/a><\/p>\n\n\n\n<p>And its a good idea to join public Graal slack group as the devs and community is quite active and eager to respond.<\/p>\n\n\n\n<p><a href=\"https:\/\/join.slack.com\/t\/graalvm\/shared_invite\/zt-anuczas6-PrCle0QVfUFPrnMEcp_JEw\">https:\/\/join.slack.com\/t\/graalvm\/shared_invite\/zt-anuczas6-PrCle0QVfUFPrnMEcp_JEw<\/a> <\/p>\n\n\n\n<p>From my experience you will need to ask for some advanced\/hidden features as they are not described in docs or scattered between several sources. Advanced topics are described here:<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/oracle\/graaljs\/tree\/master\/docs\/user\">https:\/\/github.com\/oracle\/graaljs\/tree\/master\/docs\/user<\/a><\/p>\n\n\n\n<p>One of the killer features of Graal is its polyglot support. The most mature one is the <a href=\"https:\/\/www.graalvm.org\/reference-manual\/js\/\">Javascript scripting engine<\/a>. And as opposed to previous javascript java implementation, its fully <a href=\"https:\/\/kangax.github.io\/compat-table\/es6\/\">ECMAScript compliant<\/a> so you have the whole JS library ecosystem at your disposal.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I spent last year designing and implementing javascript scripting support in our Java\/Spring backend with the help of GraalVM and its polyglot support. I fell in love with Graal, as it brings quite a lot of features and performance improvements to Java JVM. Will focus on basics of Graal Polyglot capabilities in this article. I&#8217;m [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[12,13,4,14],"class_list":["post-727","post","type-post","status-publish","format-standard","hentry","category-development","tag-development","tag-graal","tag-java","tag-javascript"],"_links":{"self":[{"href":"https:\/\/www.voldrich.net\/index.php\/wp-json\/wp\/v2\/posts\/727","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.voldrich.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.voldrich.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.voldrich.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.voldrich.net\/index.php\/wp-json\/wp\/v2\/comments?post=727"}],"version-history":[{"count":3,"href":"https:\/\/www.voldrich.net\/index.php\/wp-json\/wp\/v2\/posts\/727\/revisions"}],"predecessor-version":[{"id":731,"href":"https:\/\/www.voldrich.net\/index.php\/wp-json\/wp\/v2\/posts\/727\/revisions\/731"}],"wp:attachment":[{"href":"https:\/\/www.voldrich.net\/index.php\/wp-json\/wp\/v2\/media?parent=727"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.voldrich.net\/index.php\/wp-json\/wp\/v2\/categories?post=727"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.voldrich.net\/index.php\/wp-json\/wp\/v2\/tags?post=727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}