These do not represent languages you think are the "best" or "most
important" or anything like that, so be honest. It's just going to be
added to a flat list, probably in alphabetical order.
Here's my top five "interesting" language projects:
JRuby - pushing the bounds of class generation and dynamic invocation
perf, as well as pulling a whole other platform into the JVM ecosystem
Groovy - providing almost all Java language features and two-way
integration in addition to many (most?) dynamic language features found
in languages like Ruby.
Jython - A second opportunity to pull a whole platform into the JVM
world, and a very receptive Python community that doesn't hate anything
with a J in it
Scala - Not obvious? Solid integration with Java and object/functional
goodness.
Duby - Ok, I'm biased, but if I ever get time to work on it Duby could
marry Ruby syntax with a full complement of Java features and local type
inference. Exactly what I've been looking for.
- Charlie
I realized my topic ende dup as "Top five languages" when I in know way
meant this to be a "top" anything. Just toss out five languages you
happen to be following, or that you hope to follow in the future.
- Charlie
JRuby
Scala
Clojure
ioke
Duby.
You want justifications for those? =)
--
Ola Bini (http://ola-bini.blogspot.com)
JRuby Core Developer
Developer, ThoughtWorks Studios (http://studios.thoughtworks.com)
Practical JRuby on Rails (http://apress.com/book/view/9781590598818)
"Yields falsehood when quined" yields falsehood when quined.
No, but how about a description and status update for ioke I can use in
the talk :)
- Charlie
> JRuby - pushing the bounds of class generation and dynamic invocation
> perf, as well as pulling a whole other platform into the JVM ecosystem
>
> Groovy - providing almost all Java language features and two-way
> integration in addition to many (most?) dynamic language features found
> in languages like Ruby.
>
> Jython - A second opportunity to pull a whole platform into the JVM
> world, and a very receptive Python community that doesn't hate anything
> with a J in it
>
> Scala - Not obvious? Solid integration with Java and object/functional
> goodness.
>
> Duby - Ok, I'm biased, but if I ever get time to work on it Duby could
> marry Ruby syntax with a full complement of Java features and local type
> inference. Exactly what I've been looking for.
Just an observation - but if you are looking for listing a variety of
languages then I would be inclined to list things that are highly
distinct. For example, listing both Jython and JRuby seems somewhat
redundant. Obviously they are both distinct implementations, with
differing groups - but is there really that much novelty to the
implementation of one compared to the other? Perhaps just go with
JRuby.
I would replace it with a language/implementation that isn't
necessarily in a perfect situation to be implemented on top of the
JVM, but whose problems are the kind of things that the Da Vinci
project aims to solve. There's numerous things that have been
mentioned on this list over time, e.g. CPS style not integrating well
with normal java calling conventions (I'm thinking of maybe a Scheme
implementation), lack of tail call optimisations (please note this not
a thread to dig up that can of worms again) - so perhaps one of the
failed functional languages of the JVM projects (MLj?) or something of
that nature. Just something a little different instead of all the
'Usual Suspects'.
Good luck with your talk.
Richard
It is not open source, but StreamSQL from StreamBase is a 'Complex
Event Processing' language that runs on the JVM.
So that gives you an idea of a very different type of language that
runs on the JVM.
Fair warning: I work for StreamBase.
Matt
Yes, you make a good point. Whatever list eventually comes out of it
I'll probably group them by what challenges they face, and try to draw
out the commonality between them as areas we're working together.
- Charlie
I'd appreciate any information at all on some of these. :-)
JRuby is a Ruby implementation. Scala is programming language research trying
to integrate FP and OOP. Clojure is a Lisp dialect on the JVM. I can't find
anything on ioke. I can only find a single blog post mentioning Duby.
I suppose my vote goes to:
. OCamlJava
. Scala
. CAL
...
I'm not particularly interested in any of those though (and I've run out). I
will be extremely interested if anyone starts something more like F#! :-)
--
Dr Jon D Harrop, Flying Frog Consultancy Ltd.
http://www.ffconsultancy.com/products/?e
Scala
JRuby
Groovy
Jhaskell (http://sourceforge.net/projects/jhaskell)
OCaml-Java (http://ocamljava.x9c.fr/)
And perhaps some implementation of Lisp or Scheme if a decent one
exists. I imagine there's an abundance of them.
But certainly not Java. Who uses that anymore? ;-)
If there is ever a JVM implementation of C#, let's not walk to it, but
run. And then turn around and run in the opposite direction as we
dodge the bombardment of Microsoft lawyers that will rain down on us.
--
Guillaume Laforge
Groovy Project Manager
G2One, Inc. Vice-President Technology
http://www.g2one.com
There should be at least two, both by me. I know I haven't given a
formal introduction yet, but it's little more than a hobby project at
the moment:
http://headius.blogspot.com/2008/03/duby-type-inferred-ruby-like-jvm.html
http://headius.blogspot.com/2008/03/more-fun-with-duby.html
The primary use case for Duby right now is "me", to use when I don't
want to use Java but don't want to lose performance. The primary feature
I see that makes this stand apart from others in the arena (Scala) is
that I explicitly want it to have no runtime dependencies. It's a new
Ruby-like syntax to produce JVM bytecode. The magic is all in the compiler.
Scala
Kawa
Pnuts
Talc -
F3 - such a good name :)
Re: Kawa, I'm specifically interested in the reusable language
infrastructure that underlies it, which seems like a big plus--oddly
enough, even used in one attempt for Perl on the JVM, see -
http://www.ebb.org/bkuhn/writings/technical/thesis/node40.html for
example. I think it's a good example of the sort of learn-and-share
approach by language designers and developers which in the long run is
as important, if not more important, than bragging right about how
many languages run on the JVM.
Cheers
Patrick
PS: CAL, Fan, Clojure, Nice
You can trend the number of registered installs of Debian packages:
Yes -certainly better than the current marketing-chosen
name: "JavaFX Script".
> Re: Kawa, I'm specifically interested in the reusable language
> infrastructure that underlies it, which seems like a big plus--oddly
> enough, even used in one attempt for Perl on the JVM, see -
> http://www.ebb.org/bkuhn/writings/technical/thesis/node40.html for
> example. I think it's a good example of the sort of learn-and-share
> approach by language designers and developers which in the long run is
> as important, if not more important, than bragging right about how
> many languages run on the JVM.
We did consider using Kawa for the JavaFX Script compiler:
I did some preliminary porting, and Chris Oliver was in favor of
the idea, but we were overruled by management, who said we should
base it on javac. (I'm not saying management was wrong in this -
while we could probably have progressed faster using Kawa, there
were good practical reasons for going the javac route.)
--
--Per Bothner
p...@bothner.com per.b...@sun.com http://per.bothner.com/
Or you could if the idea of using Debian's package management for
anything Java based was worth taking seriously.
> For my CommunityOne talk...how about everyone posts five "interesting"
> JVM language projects...
Groovy
Kawa
ANTLR
Scala
And for my abandonded and perhaps most lamented:
MLj (the original source for F#)
Jim
Wow. It's fascinating that someone would list both Groovy and Scala! The
former is a cowboy language that is poorly constrained and ill-defined
while the latter is strongly founded in theory and precisely defined.
Or, as I've occasionally opined, Groovy is scruffy and Scala is neat.
And ANTLR? I use it, but it hardly represents either a JVM-specific
language or, really, a programming language at all, in any conventional
sense.
> ...
>
> Jim
Randall Schulz
> On Thursday 24 April 2008 17:08, Jim White wrote:
>
>>Charles Oliver Nutter wrote:
>>
>>>For my CommunityOne talk...how about everyone posts five
>>>"interesting" JVM language projects...
>>
>>Groovy
>>Kawa
>>ANTLR
>>Scala
>
> Wow. It's fascinating that someone would list both Groovy and Scala! The
> former is a cowboy language that is poorly constrained and ill-defined
> while the latter is strongly founded in theory and precisely defined.
> Or, as I've occasionally opined, Groovy is scruffy and Scala is neat.
Groovy has the right ideas to become a prototype for Java 3. Also I use
it a whole lot right now (<http://www.ifcx.org/>). But, alas, the
current implementation and lack of such things as a specification and
support for static type inference no doubt make it hard for most folks
to see a diamond in the rough.
Scala has the right machinery for implementing a prototype for Java 3.
Alas it suffers from the problem of other JVM languages like JRuby,
Jython, and JavaFX in that it has gratuitous syntax deviation from Java
for features that are the same as in Java.
So I'm looking ahead to Groovy 2 and thinking of getting the compiler
guts from Scala or Kawa (which for ten years I've said is the best thing
for Java no one has ever heard of...).
I'll be around for JavaOne (giving a lightning talk on IFCX Wings on
Monday) and I'm sure we'll be having many dandy discussions about such
things.
> And ANTLR? I use it, but it hardly represents either a JVM-specific
> language or, really, a programming language at all, in any conventional
> sense.
It is a classic programming language as soon as you do anything other
than specify a simple recognizer. Or perhaps it would be more accurate
to say that you must weave in code using such a conventional programming
language to do cool things. And not being JVM-specific (although that
is it's "native" platform) hardly seems like a bad thing...
Jim
Them's fightin words!
Syntax is important, but I don't think in the way that Scala's using it.
Of course I'm biased, but Ruby's syntactic "endulgences" appear to be
focused on making programming more fun...making programmers happier. I
think that alone deserves a lot of credit. Most languages focus on "one
way to do anything" or "we're easy for X programmers to learn". Matz
focused on making Ruby "fun". We could all use that kind of gratuity in
our languages.
And Ruby is far more flexible and capable than Java. It's just slow (so
far).
- Charlie
Sorry, but is is in no way and by no definition a "classic programming
language" of any sort.
> ... And not being JVM-specific
> (although that is it's "native" platform) hardly seems like a bad
> thing...
It wasn't a value judgment, but a reaction to the fact that it was
listed in response to a request for JVM-specific languages. While the
ANTLR processor itself runs in the JVM, it is agnostic as to the
language of the code it generates.
> Jim
Randall Schulz
It wasn't a request for JVM-specific languages...just JVM languages. In
other words, F# might be great, Boo may be awesome, but they're not
really on-topic for my talk. But Python, Ruby...perfect example cases.
- Charlie
Obviously syntax preference is a matter of taste and there's surely no
accounting for that (or fighting over it).
As a long-time Lisper (and Forther from before that) I'd just as soon
the language say as little as possible about syntax and let users make
up whatever they like. But that has certain well-known problems and is
not going to be a mainstream approach for "enterprise" application
developers any time soon.
My dismissal of languages on the basis of their syntactic choices is
specifically with regard to the best scripting language for Java
*developers* and also which might become a prototype for Java 3 (as GJ
was for Java 5 (2?)). For both of those purposes, a language that
doesn't support Java syntax for features that are already in Java is a
non-starter.
As far as the smackdown goes, Groovy runs a lot slower than Java (though
faster than Ruby) and that really has little significance. Groovy is
tons faster to *write* than Java and a whale load more fun (certainly as
fun as Ruby :->)!
Jim
if you care for "really different languages", there is XSLTC which
compiles XSL transformations into bytecode, as far as I know, but it's
not really under active development.
And there are at least two XQuery implementations that compile to Java
or bytecodes, by Per Bothner (hello :-)) and by Michael Kay of Saxon
fame. XQuery is a purely functional domain specific language (XML
querying), so this might be interesting to people.
I'd also hesitate to call ANTLR a programming language, as the
grammars are not turing complete (I think), but it's certainly a
domain specific language that compiles to Java code. And maybe they
are interesting because they have some really different problems with
what they do. For example, they kept running into class file, method
size, etc. limits for their DFAs and other generated code.
My list would be JRuby, Scala, Duby (indeed), XQuery, ANTLR.
Regards,
Martin
It's not that complex to have a clean separation between the specification
of the grammar and the action to execute when you reduce.
> My list would be JRuby, Scala, Duby (indeed), XQuery, ANTLR.
>
> Regards,
> Martin
>
Rémi
My turn to play the game :-)
1) JRuby or Jython or Rhino (pick the one you like best)
Showing how one can "port" an existing scripting and/or dynamic
language to the JVM
2) Groovy
Showing how we can "derive" a dynamic language using the Java 5
grammar to make it look like Java, but dynamic semantics and its own
feature set beyond what Java has to offer
3) One functional language of choise, but I'm not really qualified to
say which one is the most interesting there :-(
4) Scala
Showing another statically typed language for the JVM which marries
functional and full OO language paradigms.
5) Ng
Not only because John is my friend ;-) but because it's a very
interesting and promising experiment to create the fastest MOP
possible on a JVM which hasn't been designed to support dynamic
languages
I think these 5 ideas would cover some interesting ground, interesting
paradigms and challenges.
Guillaume
On Thu, Apr 24, 2008 at 7:53 PM, Charles Oliver Nutter
<charles...@sun.com> wrote:
>
> For my CommunityOne talk...how about everyone posts five "interesting"
> JVM language projects. This can certainly include languages that aren't
> under active development right now or that don't have a large following.
> I just want to gather a list of languages that "we implementers" and JVM
> language enthusiasts think the world should know about (and which are
> good examples of the work we're doing on VM).
>
> These do not represent languages you think are the "best" or "most
> important" or anything like that, so be honest. It's just going to be
> added to a flat list, probably in alphabetical order.
>
> Here's my top five "interesting" language projects:
>
> JRuby - pushing the bounds of class generation and dynamic invocation
> perf, as well as pulling a whole other platform into the JVM ecosystem
>
> Groovy - providing almost all Java language features and two-way
> integration in addition to many (most?) dynamic language features found
> in languages like Ruby.
>
> Jython - A second opportunity to pull a whole platform into the JVM
> world, and a very receptive Python community that doesn't hate anything
> with a J in it
>
> Scala - Not obvious? Solid integration with Java and object/functional
> goodness.
>
> Duby - Ok, I'm biased, but if I ever get time to work on it Duby could
> marry Ruby syntax with a full complement of Java features and local type
> inference. Exactly what I've been looking for.
>
> - Charlie
>
> >
>
--
Groovy, Scala, JRuby, Rhino, Kawa, Nice.... take 5 of them.
there is a difference in quality between them. I like Scala, Nice, Rhino
and Kawa not because of their implementation and integration, but
because of the ideas they bring to the JVM. Sadly Nice seems to be dead
meat, well that's another story. I also like very much some ideas in
Scala. And even though I am a Groovy developer I am not a dynamic
language fanatic. A well made static language can be much fun and if you
need certain dynamic features you emulate them.
as for Groovy... I am quite biased here of course.
and JRuby... I must say I never used it really. Groovy has so many equal
or nearly equal concepts with Ruby, that the language is most of the
time no reason to us it over Groovy for me. The interesting part in
JRuby is the implementation.
bye blackdrag
--
Jochen "blackdrag" Theodorou
The Groovy Project Tech Lead (http://groovy.codehaus.org)
http://blackdragsview.blogspot.com/
http://www.g2one.com/
They have, but Fortress probably shouldn't really be considered a JVM
language. If it stays on the JVM it will probably be because it failed
as a project. The JVM version is only the reference implementation and
is kinda unsuitable for their goals.
Can you elaborate on why the JVM is unsuitable for their goals?
Frankly, I'm not sure. But they've said in the past that their intent
is not to remain on the JVM - the version currently running on it is
just an interpreter as far as I know. I think part of it is that they
want much more tight control over exactly what work goes on what core,
which the JVM's threading model doesn't really allow at the moment.
This interview with Guy Steele about Fortress might answer your question:
http://se-radio.net/podcast/2006-11/episode-36-interview-guy-steele
Well, I'm not sure exactly what distinction you're drawing, but ANTLR is
neither a JVM language nor a programming language in any but a very
narrow and specialized sense. It does define a language with which you
communicate your specifications to it, but that's essentially true of
all computer programs that accept input.
> - Charlie
Randall Schulz
--
Ola Bini (http://ola-bini.blogspot.com)
JRuby Core Developer
Developer, ThoughtWorks Studios (http://studios.thoughtworks.com)
Practical JRuby on Rails (http://apress.com/book/view/9781590598818)
"Yields falsehood when quined" yields falsehood when quined.
In what way is ANTLR not Turing Complete? You can most assuredly
implement a complete Turing Machine in ANTLR for the actions and
semantic predicates are most certinly part of the language. For folks
who only use ANTLR to generate an analyzer and link it to an external
program (I can see how they might be unaware of the rest of it
capabilities. But it is not at all necessary to use ANTLR that way.
You can simply write your whole compiler or whatever other application
in ANTLR and be done with it. Now ANTLR isn't so interesting if you're
not processing an input stream or tree, but that doesn't prevent you
from running arbitrary code on an empty input.
So if you're all still objecting to the idea of "ANTLR" being an
interesting JVM language (as though somehow the Java parts of the .g
file aren't "ANTLR"), I'll change my vote to "ANTLR/Java v3".
Of course Groovy gets rather less interesting if you drop the Java
syntax bits. Particularly when that is one of the key aspects that
makes it so compelling over otherwise comparable languages like JRuby,
Jython, JavaFX, and Scala.
Jim
Antlr is a compiler, according to the definition of a compiler, but the
input language is not a full programming language.
> So if you're all still objecting to the idea of "ANTLR" being an
> interesting JVM language (as though somehow the Java parts of the .g
> file aren't "ANTLR"), I'll change my vote to "ANTLR/Java v3".
>
> Of course Groovy gets rather less interesting if you drop the Java
> syntax bits. Particularly when that is one of the key aspects that
> makes it so compelling over otherwise comparable languages like JRuby,
> Jython, JavaFX, and Scala.
>
Of course, the Java syntax bits are an integral part of the Groovy
language, in comparison to Antlr.
> Jim
>
> I have to vote against Rhino! It would be a good example of how to NOT
> port a language to the JVM. Actually, maybe that would make it a good
> topic to talk about.
Definitely. Care to elaborate?
Attila.
>
>
> -- Michael
What is the working definition of a "scripting" language?
> functional/ Scala, Haskel (business objects has java
> implementation as .. CAL)
> logic: jProlog
> templating: Velocity, JSP
Freemarker deserves to be included in this group, to be sure. And GSP is
quite nice, though Groovy-specific.
> to exotics or relative new concepts:
> term rewriting: /TermWare, Tom
Tom operates as a Java source-to-source transformation, so technically
it's not a JVM language, right? It arguably has more in common with
ANTLR than with any of the many languages that directly target the JVM.
> or reimplementation of known languages
> Axiom C, Jython, JRuby
>
>
> (And yes - I work on TermWare ;) )
OK, so I had to look up TermWare to see what it was about, and the only
thing I can say is, why couldn't I find this when I went looking for
rule-based rewriting software? I think you guys need to do more to gain
some visibility!
Randall Schulz
I think this is a nice breakdown....Individual languages in each area
subject to taste...
And you are the first person to mention the whole Prolog/inference
dimension of languages :)
-Tom
--
Blog: http://www.bloglines.com/blog/ThomasEEnebo
Email: en...@acm.org , tom....@gmail.com
Thanks, I'll check that out.
> Or, may be c2.com definition:
> http://c2.com/cgi/wiki?ScriptingLanguage (it's morer accurate than
> wikipedia)
>
> ...
>
> > > to exotics or relative new concepts:
> > > term rewriting: /TermWare, Tom
> >
> > Tom operates as a Java source-to-source transformation, so
> > technically it's not a JVM language, right? It arguably has more in
> > common with ANTLR than with any of the many languages that directly
> > target the JVM.
>
> No - Tom 2.x is extension of Java. It is Java class + rule/rewriting
> matching.
Huh? I'm using Tom 2.5, and you have to write external type and
constructor definitions in Tom's definition language and then run
augmented Java programs through the Tom translator to get ordinary Java
source you can compile.
> ...
>
> > OK, so I had to look up TermWare to see what it was about, and the
> > only thing I can say is, why couldn't I find this when I went
> > looking for rule-based rewriting software? I think you guys need to
> > do more to gain some visibility!
>
> ...
>
> //Home page is http://www.gradsoft.ua/products/termware_eng.html
> (It's strong enough to implement Java Partial evaluator.)
Yes, obviously I found it.
Randall Schulz
> What is the working definition of a "scripting" language?
I really love Larry Wall's take on it:
<http://www.perl.com/pub/a/2007/12/06/soto-11.html>
>> functional/ Scala, Haskel (business objects has java
>> implementation as .. CAL)
>> logic: jProlog
>> templating: Velocity, JSP
>
> Freemarker deserves to be included in this group, to be sure.
Well spotted. Thank you, Randall :-)
Attila.
As well as changing C to Java, change the paradigm from procedural to
OO. To control or customize a procedural system, it is natural to
write "scripts," little procedures that call system procedures. This
kind of traditional procedural scripting is not very useful when
working with an OO system because the system's control and
customization hooks are based on OO concepts, not procedural ones. To
control and customize an OO system you have to create objects and call
methods. A scripting language for a Java-based system must let you
call instance methods, instantiate classes, subclass existing classes,
and implement interfaces.
-David
For me there is just the one: Scala, the marriage of object oriented
with functional is awesome.
Arco
You should start another thread with an overview of the language and the
implementation's design. We'd love to hear about any implementation
challenges you've run into.
- Charlie
I don't really consider either JSP or GSP to be their own languages
since they're just one language stuffed inside markup syntax.
- Charlie