{"id":271,"date":"2014-11-26T16:27:23","date_gmt":"2014-11-26T16:27:23","guid":{"rendered":"http:\/\/ninecrows.com\/career\/?p=271"},"modified":"2014-11-26T16:33:13","modified_gmt":"2014-11-26T16:33:13","slug":"interesting-tools-and-libraries-for-java-and-the-jvm","status":"publish","type":"post","link":"https:\/\/ninecrows.com\/career\/2014\/11\/26\/interesting-tools-and-libraries-for-java-and-the-jvm\/","title":{"rendered":"Interesting tools and libraries for Java and the JVM."},"content":{"rendered":"<p>I&#8217;ve spent a few evenings rummaging around the web, looking for interesting tools and code that is either coded in java or runs on the JVM. There is a lot of material out there. I had been discussing other programming languages with a friend a little while ago and lisp was mentioned. That got me thinking (and clojure as a functional programming oriented lisp dialect particularly got my attention) so this list is currently a bit lisp heavy.<\/p>\n<ul>\n<li><a href=\"http:\/\/www.antlr.org\">ANTLR<\/a> is a java coded parser generator.<\/li>\n<li><a href=\"http:\/\/clojure.org\">Clojure<\/a> is a lisp based functional programming language that generates JVM code and can interoperate with java proper. Clojure also seems to have &gt;<a href=\"http:\/\/clojure.org\/clojurescript\">ClojureScript<\/a> which generates javascript code from Clojure inputs.<\/li>\n<li><a href=\"http:\/\/www.jython.org\">Jython<\/a> is a python compiler that generates JVM code.<\/li>\n<li><a href=\"http:\/\/sisc-scheme.org\">SISC<\/a> is a compiler for the Scheme dialect of lisp that targets JVM code.<\/li>\n<li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Mozilla\/Projects\/Rhino\">Rhino<\/a> is a javascript interpreter written entirely in java that originates from the Mozilla folks.<\/li>\n<li><a href=\"http:\/\/jruby.org\">JRuby<\/a> implements the ruby language (which I don&#8217;t know much about, but sounds worth a look) and generates JVM code.<\/li>\n<li><a href=\"http:\/\/common-lisp.net\/project\/armedbear\/\">Armed Bear Common Lisp<\/a> was the first common lisp implementation that I came across that runs on the JVM. There seem to be others out there, but it appears that common lisp implementations are a bit old and ragged at this point (at least the references I could find).<\/li>\n<li><a href=\"http:\/\/www.gnu.org\/software\/kawa\/\">Kawa<\/a> is another scheme implementation \u00a0with JVM support.<\/li>\n<li><a href=\"http:\/\/groovy.codehaus.org\">Groovy<\/a> is in the same category for me as ruby. Sounds interesting, runs on the JVM and I don&#8217;t know much about it.<\/li>\n<\/ul>\n<p>There&#8217;s much more out there and I&#8217;ll probably wind up wandering through it as time passes. I&#8217;ve grabbed snapshots of these projects to mess with. Depending on time and momentum I&#8217;m likely to poke at Clojure and perhaps a bit at some of the other lisp dialects. I haven&#8217;t messed with lisp in a long time (and most of what I have done was gnu emacs lisp) but it seems as if a few interesting things are going on there. A functional programming environment that can be used in conjunction with other methodologies is also very interesting. I can&#8217;t see doing a majority of the things I do in functional land, but having the option of doing tasks that are well suited to that approach using a functional environment is quite interesting.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve spent a few evenings rummaging around the web, looking for interesting tools and code that is either coded in java or runs on the JVM. There is a lot of material out there. I had been discussing other programming languages with a friend a little while ago and lisp was mentioned. That got me &hellip; <a href=\"https:\/\/ninecrows.com\/career\/2014\/11\/26\/interesting-tools-and-libraries-for-java-and-the-jvm\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Interesting tools and libraries for Java and the JVM.<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[1],"tags":[],"class_list":["post-271","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p7F2Qc-4n","jetpack-related-posts":[],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/ninecrows.com\/career\/wp-json\/wp\/v2\/posts\/271"}],"collection":[{"href":"https:\/\/ninecrows.com\/career\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ninecrows.com\/career\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ninecrows.com\/career\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ninecrows.com\/career\/wp-json\/wp\/v2\/comments?post=271"}],"version-history":[{"count":4,"href":"https:\/\/ninecrows.com\/career\/wp-json\/wp\/v2\/posts\/271\/revisions"}],"predecessor-version":[{"id":275,"href":"https:\/\/ninecrows.com\/career\/wp-json\/wp\/v2\/posts\/271\/revisions\/275"}],"wp:attachment":[{"href":"https:\/\/ninecrows.com\/career\/wp-json\/wp\/v2\/media?parent=271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ninecrows.com\/career\/wp-json\/wp\/v2\/categories?post=271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ninecrows.com\/career\/wp-json\/wp\/v2\/tags?post=271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}