Skip to content

Instantly share code, notes, and snippets.

@fumokmm
Created February 27, 2011 03:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fumokmm/845869 to your computer and use it in GitHub Desktop.
Save fumokmm/845869 to your computer and use it in GitHub Desktop.
for 「JVM上で動くプログラミング言語のまとめ」http://d.hatena.ne.jp/fumokmm/20101017/1287344928
#!/bin/sh
groovy makeJvmBasedLanguage.groovy > out.txt
header {
name = '*言語名'
wiki = '*Wikipedia'
description = '*説明'
}
langs {
// --------------------------------------------------
Scala {
url = 'http://www.scala-lang.org/'
logo {
url = 'http://img.f.hatena.ne.jp/images/fotolife/f/fumokmm/20101018/20101018230127.png'
width = 100
}
wiki {
ja = 'http://ja.wikipedia.org/wiki/Scala'
en = 'http://en.wikipedia.org/wiki/Scala_%28programming_language%29'
}
description = '''
|オブジェクト指向+関数型のハイブリット言語。
|TwitterやFacebookなどもバックボーンにScalaが使われている。
'''
history {
add = '2010-10-17'
}
}
// --------------------------------------------------
Clojure {
url = 'http://clojure.org/'
logo {
url = 'http://clojure.org/space/showimage/clojure-icon.gif'
witdh = 100
}
wiki {
ja = 'http://ja.wikipedia.org/wiki/Clojure'
en = 'http://en.wikipedia.org/wiki/Clojure'
}
description = '''
|LISP系の言語の方言の一つ。関数型プログラミングのプログラミングスタイルでのインタラクティブな開発を支援し、
|マルチスレッドプログラムの開発を容易化する汎用言語。
|.NET共通言語ランタイムでも動作する。
'''
history {
add = '2010-10-17'
}
}
// --------------------------------------------------
Groovy {
url = 'http://groovy.codehaus.org/'
logo {
url = 'http://media.xircles.codehaus.org/_projects/groovy/_logos/medium.png'
width = 100
}
wiki {
ja = 'http://ja.wikipedia.org/wiki/Groovy'
en = 'http://en.wikipedia.org/wiki/Groovy_%28programming_language%29'
}
description = '''
|Groovy(グルービー)は、Javaプラットフォーム (Java仮想マシン、JVM) 上で動作するアジャイルな動的言語である。
'''
history {
add = '2010-10-17'
}
}
// --------------------------------------------------
Rhino {
url = 'http://www.mozilla.org/rhino/'
logo {
url = 'http://upload.wikimedia.org/wikipedia/commons/6/68/Inicio_de_ldp_para_260px50px_moziyarinocrnt.jpg'
width = 100
}
wiki {
ja = 'http://ja.wikipedia.org/wiki/Rhino'
en = 'http://en.wikipedia.org/wiki/Rhino_%28JavaScript_engine%29'
}
description = '''
|オープンソースで開発されているJavaScriptの実装。
'''
history {
add = '2010-10-17'
}
}
// --------------------------------------------------
Jaskell {
url = 'http://jaskell.codehaus.org/'
description = '''
|Jaskell is a lazy functional scripting language for Java. It features higher-order function,
|function currying, string interpolation, lazy evaluation, monad, dynamic typing,
|simple syntax and semantics etc.
'''
history {
add = '2010-10-18'
}
}
// --------------------------------------------------
BeanShell {
url = 'http://www.beanshell.org/'
logo {
url = 'http://www.beanshell.org/images/bshsplash3.gif'
width = 100
}
wiki {
en = 'http://en.wikipedia.org/wiki/BeanShell'
}
description = '''
|Lightweight Scripting for Java
'''
history {
add = '2010-10-18'
}
}
// --------------------------------------------------
Jython {
url = 'http://www.jython.org/'
logo {
url = 'http://www.jython.org/css/jython.png'
width = 100
}
wiki {
ja = 'http://ja.wikipedia.org/wiki/Jython'
en = 'http://en.wikipedia.org/wiki/Jython'
}
description = '''
|PythonのJava実装。
'''
history {
add = '2010-10-17'
}
}
// --------------------------------------------------
JRuby {
url = 'http://jruby.org/'
logo {
url = 'http://jruby.org/images/jruby-logo.png'
width = 100
}
wiki {
ja = 'http://ja.wikipedia.org/wiki/JRuby'
en = 'http://en.wikipedia.org/wiki/JRuby'
}
description = '''
|RubyのJava実装。
'''
history {
add = '2010-10-17'
}
}
// --------------------------------------------------
Ioke {
url = 'http://ioke.org/'
logo {
url = 'http://ioke.org/img/IokeLogo.png'
width = 100
}
wiki {
en = 'http://en.wikipedia.org/wiki/Ioke_%28programming_language%29'
}
description = '''
|プロトタイプベースの言語。
'''
history {
add = '2010-10-17'
}
}
// --------------------------------------------------
Nice {
url = 'http://nice.sourceforge.net/'
wiki {
en = 'http://en.wikipedia.org/wiki/Nice_%28programming_language%29'
}
description = '''
|Nice is an advanced object-oriented programming language.
'''
history {
add = '2010-10-17'
}
}
// --------------------------------------------------
SISC {
url = 'http://sisc-scheme.org/'
wiki {
en = 'http://en.wikipedia.org/wiki/SISC'
}
description = '''
|SISC is an extensible Java based interpreter of the algorithmic language Scheme.
'''
history {
add = '2010-10-18'
}
}
// --------------------------------------------------
Jawk {
url = 'http://jawk.sourceforge.net/'
description = '''
|Jawk is the implementation of AWK in Java. Jawk parses,
|analyzes, and interprets and/or compiles AWK scripts.
|Compilation is targetted for the JVM.
'''
history {
add = '2010-10-18'
}
}
// --------------------------------------------------
Fantom {
url = 'http://fantom.org/'
logo {
url = 'http://fantom.org/doc/fantom.png'
width = 100
}
wiki {
ja = 'http://ja.wikipedia.org/wiki/Fantom_%28%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%29'
en = 'http://en.wikipedia.org/wiki/Fantom_%28programming_language%29'
}
description = '''
|汎用のオブジェクト指向言語で、.NET共通言語ランタイム、JavaScript処理系でも動作する。
|クロージャーによって関数型プログラミングをサポートし、アクターモデルによって並行コンピューティングをサポートし、
|型システムは静的型付けと動的型付けの両方の特徴を兼ね備えている。
'''
history {
add = '2010-10-17'
}
}
// --------------------------------------------------
Sleep {
url = 'http://sleep.dashnine.org/'
logo {
url = 'http://sleep.dashnine.org/images/bg/header_image.jpg'
width = 100
}
description = '''
|Sleep is a multi-paradigm scripting language for the Java Platform.
|Easy to learn with Perl and Objective-C inspired syntax.
'''
history {
add = '2010-10-18'
}
}
// --------------------------------------------------
jacl {
url = 'http://tcljava.sourceforge.net/docs/website/index.html'
logo {
url = 'http://tcljava.sourceforge.net/docs/website/logo100.gif'
height = 100
}
wiki {
en = 'http://en.wikipedia.org/wiki/Java_Tcl'
}
description = '''
|JavaによるTclの実装。
'''
history {
add = '2010-10-18'
}
}
// --------------------------------------------------
Mirah {
url = 'http://www.mirah.org/'
description = '''
|Mirah (nee Duby) is a new experimental language born out of the JRuby project.
|In order to make implementing Ruby on the JVM easier and more approachable for Java and Ruby developers alike.
'''
history {
add = '2010-10-29'
}
}
// --------------------------------------------------
FreeMarker {
url = 'http://freemarker.sourceforge.net/'
logo {
url = 'http://freemarker.sourceforge.net/images/logo_e0e0e0.png'
width = 100
}
wiki {
en = 'http://en.wikipedia.org/wiki/FreeMarker'
}
description = '''
|FreeMarker is a "template engine"; a generic tool to generate text output (anything from HTML to autogenerated source code)
|based on templates. It's a Java package, a class library for Java programmers.
|It's not an application for end-users in itself, but something that programmers can embed into their products.
'''
history {
add = '2010-10-25'
}
}
// --------------------------------------------------
Quercus {
url = 'http://quercus.caucho.com/'
description = '''
|Quercus is Caucho Technology's 100% Java implementation of PHP 5 released under the Open Source GPL license.
'''
history {
add = '2010-10-23'
}
}
// --------------------------------------------------
'Apache Velocity' {
url = 'http://velocity.apache.org/'
logo {
url = 'http://upload.wikimedia.org/wikipedia/en/6/6f/Jakarta_Velocity_Logo.png'
width = 100
}
wiki {
ja = 'http://ja.wikipedia.org/wiki/Apache_Velocity'
en = 'http://en.wikipedia.org/wiki/Apache_Velocity'
}
description = '''
|Velocity is a project of the Apache Software Foundation,
|charged with the creation and maintenance of open-source software related to the Apache Velocity Engine .
|All software created at the Velocity project is available under the Apache Software License and free of charge for the public.
'''
history {
add = '2010-10-25'
}
}
// --------------------------------------------------
JavaFX {
url = 'http://javafx.com/'
logo {
url = 'http://knowledge.sorich.jp/?plugin=ref&page=KnowledgeDrive&src=Javafx-logo.png'
width = 100
}
wiki {
ja = 'http://ja.wikipedia.org/wiki/JavaFX'
en = 'http://en.wikipedia.org/wiki/JavaFX'
}
description = '''
|JavaFXとはJava上で動作するRIAプラットフォームであり様々な環境で動作するアプリケーションを作成することができる。
'''
history {
add = '2010-10-24'
}
}
// --------------------------------------------------
Fortress {
url = 'http://projectfortress.sun.com/Projects/Community'
logo {
url = 'http://projectfortress.sun.com/Projects/Community/chrome/site/ProjectFortressBanner.png'
width = 100
}
wiki {
en = 'http://en.wikipedia.org/wiki/Fortress_%28programming_language%29'
}
description = '''
|大規模な科学技術計算と並列計算用に設計されたプログラミング言語。Sun社内のリサーチグループにより、JavaやFortranなど既存の言語を参考に。'
'''
history {
add = '2010-10-20'
}
}
// --------------------------------------------------
Pnuts {
url = 'https://pnuts.dev.java.net/'
logo {
url = 'http://upload.wikimedia.org/wikipedia/en/2/2f/Pnuts_logo.png'
width = 100
}
wiki {
en = 'http://en.wikipedia.org/wiki/Pnuts'
}
description = '''
|Pnuts is a script language for Java environment.
|It enables interaction with Java environment, simple Web scripting, customization for Java programs, and so on.
'''
history {
add = '2010-10-25'
}
}
// --------------------------------------------------
OGNL {
url = 'http://www.opensymphony.com/ognl/'
wiki {
en = 'http://en.wikipedia.org/wiki/OGNL'
}
description = '''
|OGNL stands for Object-Graph Navigation Language; it is an expression language for getting and setting properties of Java objects. You use the same expression for both getting and setting the value of a property.
'''
history {
add = '2010-10-25'
}
}
// --------------------------------------------------
Gosu {
url = 'http://gosu-lang.org/'
logo {
url = 'http://gosu-lang.org/images/gosu.png'
width = 100
}
wiki {
en = 'http://en.wikipedia.org/wiki/Gosu_%28programming_language%29'
}
description = '''
|Gosu is an imperative statically-typed object-oriented programming language that is designed to be expressive,
|easy-to-read, and reasonably fast.
'''
history {
add = '2010-11-14'
}
}
// --------------------------------------------------
'OCaml-Java' {
url = 'http://ocamljava.x9c.fr/'
description = '''
|The goal of the OCaml-Java project is to allow seamless integration of Objective Caml and Java.
'''
history {
add = '2010-10-23'
}
}
// --------------------------------------------------
Erjang {
url = 'http://groups.google.com/group/erjang'
description = '''
|Erjang is a virtual machine for Erlang.
'''
history {
add = '2010-10-20'
modified = '2010-10-25'
}
}
// --------------------------------------------------
Kahlua {
url = 'http://code.google.com/p/kahlua/'
logo {
url = 'http://www.gstatic.com/codesite/ph/images/defaultlogo.png'
width = 100
}
description = '''
|Kahlua is a Virtual Machine together with a standard library, all implemented in Java.
|It tries to emulate Lua as much as possible, while still reusing as much as possible from Java.
'''
history {
add = '2010-10-23'
}
}
// --------------------------------------------------
Jelly {
url = 'http://commons.apache.org/jelly/'
logo {
url = 'http://commons.apache.org/jelly/images/logo.jpg'
width = 100
}
wiki {
en = 'http://en.wikipedia.org/wiki/Apache_Jelly'
}
description = '''
|Jelly is a tool for turning XML into executable code.
|So Jelly is a Java and XML based scripting and processing engine.
|Jelly can be used as a more flexible and powerful front end to Ant.
'''
history {
add = '2010-10-25'
}
}
// --------------------------------------------------
'Jep Java' {
url = 'http://www.singularsys.com/jep/'
description = '''
|Jep is a Java library for parsing and evaluating mathematical expressions.
|With this package you can allow your users to enter an arbitrary formula as a string, and instantly evaluate it.
|Jep supports user defined variables, constants, and functions.
|A number of common mathematical functions and constants are included.
'''
history {
add = '2010-10-25'
}
}
// --------------------------------------------------
JUEL {
url = 'http://juel.sourceforge.net/index.html'
logo {
url = 'http://juel.sourceforge.net/skin/images/juel-logo.gif'
width = 100
}
wiki {
en = 'http://en.wikipedia.org/wiki/Unified_Expression_Language'
}
description = '''
|JUEL is an implementation of the Unified Expression Language (EL)
'''
history {
add = '2010-10-25'
}
}
// --------------------------------------------------
isCOBOL {
url = 'http://www.veryant.com/products/'
logo {
url = 'http://www.veryant.com/images/logo/newlogo.gif'
width = 100
}
description = '''
|The COBOL for Java platforms. なんか製品っぽいんだがよくわからない。情報求む。
'''
history {
add = '2010-10-23'
}
}
// --------------------------------------------------
renjin {
url = 'http://code.google.com/p/renjin/'
logo {
url = 'http://www.gstatic.com/codesite/ph/images/defaultlogo.png'
width = 100
}
description = '''
|JavaによるRの実装。
'''
history {
add = '2011-02-23'
}
}
// --------------------------------------------------
Noop {
url = 'http://code.google.com/p/noop/'
logo {
url = 'http://www.gstatic.com/codesite/ph/images/search-48.gif'
width = 100
}
wiki {
ja = 'http://ja.wikipedia.org/wiki/Noop_%28%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%29'
en = 'http://en.wikipedia.org/wiki/Noop'
}
description = '''
|Noop (発音 /ˈnoʊ.ɒp/) は新しいプログラミング言語を開発することを意図するGoogle社の新しいプログラミング言語である。
|Noopは古い言語と新しい言語の最もよい特徴の組合を試みる言語である。 NoopがターゲットとするプラットフォームはJava仮想マシンである。
'''
history {
add = '2011-02-28'
}
}
// --------------------------------------------------
Kawa {
url = 'http://www.gnu.org/software/kawa/'
logo {
url = 'http://www.gnu.org/software/kawa/style/kawa-logo.png'
width = 100
}
wiki {
en = 'http://en.wikipedia.org/wiki/Kawa'
}
description = '''
|Kawa is a framework written in Java for implementing high-level and dynamic languages,
|compiling them into Java bytecodes.
|Kawa is an implementation of Scheme, which is in the Lisp family of programming languages.
|Implementations of other programming languages, including XQuery (Qexo) and Emacs Lisp (JEmacs).
'''
history {
add = '2011-02-28'
}
}
// --------------------------------------------------
RingoJS {
url = 'http://ringojs.org/'
logo {
url = 'http://ringojs.org/static/ringojs.png'
width = 100
}
wiki {
ja = 'http://ja.wikipedia.org/wiki/RingoJS'
en = 'http://en.wikipedia.org/wiki/RingoJS'
}
description = '''
|RingoJS is a JavaScript runtime written in Java,
|based on the Mozilla Rhino JavaScript engine.
|It is geared to web applications,
|but can be used for command line or even GUI applications as well.
'''
history {
add = '2011-04-20'
}
}
// --------------------------------------------------
Kotlin {
url = 'http://confluence.jetbrains.net/display/Kotlin/Welcome'
logo {
url = 'https://lh4.googleusercontent.com/-zRiBE7CaoJ0/Tib4y5v2myI/AAAAAAAAADA/sjAtu_6a10Q/Kotlin.png'
width = 100
}
wiki {
}
description = '''
|"Project Kotlin" is the codename for a statically-typed
|JVM-targeted programming language developed by JetBrains
|and intended for industrial use.
'''
history {
add = '2011-07-21'
}
}
// --------------------------------------------------
Judoscript {
url = 'http://www.judoscript.org/judo.html'
logo {
url = 'https://lh4.googleusercontent.com/-7CfTQBn66wk/TlXX5cv9KPI/AAAAAAAAAEo/So8yQmudfPs/judo_picture.gif'
width = 100
}
wiki {
en = 'http://en.wikipedia.org/wiki/Judoscript'
}
description = '''
|The Judo language is the key technology hosted herein.
|You can find the latest software, news, the most current documentation, sample code and tutorials.
'''
history {
add = '2011-08-25'
modified = '2011-08-25'
}
}
// --------------------------------------------------
Jamaica {
url = 'http://www.judoscript.org/jamaica.html'
logo {
url = 'https://lh3.googleusercontent.com/-IZ3EVk62E0o/TlXaE2KSUpI/AAAAAAAAAFM/W5UYkyfH5hM/jamaica_picture.gif'
width = 100
}
wiki {
en = 'http://en.wikipedia.org/wiki/Jamaica_%28Java_assembler%29'
}
description = '''
|Jamaica, the JVM Macro Assembler, is an easy-to-learn and easy-to-use assembly language for JVM bytecode programming.
'''
history {
add = '2011-08-25'
modified = '2011-08-25'
}
}
// --------------------------------------------------
Jasmin {
url = 'http://jasmin.sourceforge.net/'
logo {
url = 'https://lh6.googleusercontent.com/-jjOLTMhDXjM/TlXXxJ8cTgI/AAAAAAAAAEQ/9YkyV1_a69Q/jasmin_icon.jpg'
width = 100
}
wiki {
en = 'http://en.wikipedia.org/wiki/Jasmin_%28software%29'
}
description = '''
|Jasmin is an assembler for the Java Virtual Machine.
|It takes ASCII descriptions of Java classes, written in a simple assembler-like syntax using the Java Virtual Machine instruction set.
|It converts them into binary Java class files, suitable for loading by a Java runtime system.
'''
history {
add = '2011-08-25'
modified = '2011-08-25'
}
}
/*----------------------SAMPLE
// --------------------------------------------------
SampleLanguage {
url = 'http://www.xxxx/'
logo {
url = 'http://xxxxx/logo.jpg'
width = 100
height = 100
}
wiki {
ja = 'http://ja.wikipedia.org/wiki/xxxxx'
en = 'http://en.wikipedia.org/wiki/xxxxx'
}
description = '''
|ここに言語の説明を書く。
|先頭にパイプを置いて複数行のコメントを書ける。
'''
history {
add = '2011-02-28'
modified = '2011-02-28'
}
}
-------------------------*/
}
import groovy.text.*
// see: http://d.hatena.ne.jp/fumokmm/20101019/1287502703
String.metaClass.strip = { first ->
def reg = (first ?: '|').with{ [/^.*\${it}.*$/, /^.*\${it}/] }
delegate.readLines()
.grep(~reg[0])*.replaceFirst(reg[1], '')
.join(System.properties['line.separator'])
}
List.metaClass.collectWithIndex = { clos ->
def result = []
delegate.eachWithIndex { item, idx ->
result << clos(item, idx)
}
result
}
// ===== Input =====
def config = new ConfigSlurper().parse(new File('jvm_based_language.config').toURL())
// convert to header string
def toHeader = { h ->
"|${['*No.', h.name, h.wiki, h.description].join('|')}|"
}
// convert to langs string
def toLangs = { langs ->
langs.collect{ name, lang ->
[ hatebu: getHatenaBookmarkNumber(lang.url),
line : """|${
[toName(name, lang.url, lang.logo),
toWikipedia(lang.wiki),
toDescription(lang.description)
].join('|')
}|"""
]
}.sort{
a, b -> b.hatebu <=> a.hatebu // order by desc
}.collectWithIndex { item, idx ->
"|${idx + 1}${item.line}"
}
}
// ===== Output =====
def engine = new SimpleTemplateEngine()
def binding = [
header: toHeader(config.header),
langs : toLangs(config.langs)
]
def template = engine.createTemplate(new File('template.txt')).make(binding)
println template.toString()
// ===== Function =====
def getHatenaBookmarkNumber(url) {
try {
new URL("http://api.b.st-hatena.com/entry.count?url=${URLEncoder.encode(url, 'UTF-8')}").getText('UTF-8') as int
} catch (e) { 0 }
}
// convert to name string
def toName(name, url, logo) {
assert name, 'required name'
assert url, 'required url'
def logoStr = {
if (logo) {
assert logo.url, 'required logo.url'
def r = '' << ''
r << "<br/>"
r << "<a href=${wrap(logo.url)}>"
r << "<img src=${wrap(logo.url)}"
if (logo.width) {
r << " width=${wrap(logo.width)}"
}
if (logo.height) {
r << " height=${wrap(logo.height)}"
}
r << " border=${wrap('0')}"
r << "/>"
r << "</a>"
r.toString()
} else ''
}
"[${url}:title=${name}:bookmark]${logoStr()}"
}
// convert to wikipedia string
def toWikipedia(wiki) {
if (wiki) {
def list = [
wiki.ja ? "[${wiki.ja}:title=ja]" : null,
wiki.en ? "[${wiki.en}:title=en]" : null
] - null
"(${list.join(',')})"
} else ' '
}
// convert to description string
def toDescription(desc) {
desc.strip().replace(System.properties['line.separator'], '')
}
// wrapping string with double quote
def wrap(x) {
if (!x) return '""'
"\"$x\""
}
*1287344928*[プログラミング言語][JVM]JVM上で動くプログラミング言語のまとめ
JVM (Java Virtual Machine)上で動くプログラミング言語が増えてきたのでここらへんでまとめて行きたいと思います。新しいのを見つけ次第追加して行きます。
こんなのもあるよ!といった情報は大歓迎です。コメントかはてブコメントにてよろしくお願いします。
**JVM上で動くプログラミング言語一覧 ※はてブエントリ数順((手動です。時々見直します。))
<%= header %>
<% langs.each { lang -> %><%= lang %>
<% } %>
**更新履歴
-2011-08-25 Judoscript, Jamaica, Jasmin を追加。
-2011-07-21 Kotlin を追加。
-2011-04-20 RingoJS を追加。
-2011-02-28 Noop, Kawa を追加。
-2011-02-23 renjin を追加。
-2010-11-14 Gosu を追加。
-2010-10-29 Mirah を追加。
-2010-10-25 Pnuts, Jelly, JUEL, OGNL, FreeMarker, Jep Java, Apache Velocity を追加。ErjangのURL修正。
-2010-10-24 JavaFX を追加。
-2010-10-23 isCOBOL, Kahlua, OCaml-Java, Quercus を追加。
-2010-10-20 参考にリンクを追加。Fortress, Erjang を追加。
-2010-10-18 参考にリンクを追加。Jawk, BeanShell, Jaskell, SISC, Sleep, jacl を追加。
-2010-10-17 新規作成
**おまけ
[https://gist.github.com/845869:title=リストを生成するGroovyスクリプト:bookmark]
**参考
[https://scripting.dev.java.net/:title:bookmark]
[http://en.wikipedia.org/wiki/List_of_JVM_languages:title:bookmark]
[http://www.is-research.de/info/vmlanguages/:title:bookmark]
[http://en.wikipedia.org/wiki/Java_Virtual_Machine:title:bookmark]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment