Xtend. Yet another "better Java" language; this time from Eclipse. Built with Xtext.

Eclipse Xtend. Other than the standard syntactic sugar, it includes multiple dispatch and extension methods.

Nothing particularly interesting, unfortunately. The other two "better Java" languages seem superior: Kotlin from JetBrains and Ceylon from RedHat.

However, it does look like it was built with Xtext, which is pretty cool.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Would prefer a MetaObject Protocol over multiple-dispatch

I'm not sure what the target audience is for XTend.
Is XTend meant to be a new Java-killer language?
Or is it meant to be a base language for language developers to use to create their own language?

I sure like XTend's feature set and would like to use XTend over plain Java.

But as a base for other languages I would prefer a language with a MOP.

It seems that XTend comes

It seems that XTend comes out of IBM Research's work on language extensibility and IDE construction kits. I don't think this is an effort to disrupt the Java languages market; no one is actually looking for another Java-killer anymore for a boring JVM platform that is almost dead.

That being said, XTend is interesting from the standpoint that they are trying to be interoperable with Java libraries without requiring new libraries to take advantage of their new features. So they have some syntactic sugar for existing Java idioms rather than creating wrapping existing Java libraries to take advantage of its language features. This is quite in contrast to Scala, where although you can call Java directly, a good experience dictates a library written specifically for Scala's constructs.

Xtend is built with Xtext

Xtend is a statically typed programming language for Java developers (mainly). It's not meant to be further extended, although you could.
It is built with Xtext (xtext.org), Eclipse's language development framework, and uses its latest capabilities to define JVM-languages easily.

I have recorded a short screencast and blogged about it recently :
http://blog.efftinge.de/2011/11/build-your-own-jvm-language.html

Think of it like CoffeeScript for java

It isn't an attempt to reinvent java, just smooth over some of its roughest edges and most accidental complexities in with more convenient syntax that can be related to java very simply.

They've gone out of their way to make it mix with java very well, so I don't think they're trying to kill java. In fact, if you use XTend, you still have to declare your enums + interfaces in .java files, and you'll still be mostly consuming java libraries.

no one is actually looking

no one is actually looking for another Java-killer anymore for a boring JVM platform that is almost dead

Dead on the iPad?

Dead on the web (JavaScript

Dead on the web (JavaScript is where it is at now), dead on the iPad, dead for Windows apps (.NET), dead on the client (accept for Eclipse). Alive on Android, alive on the enterprise server, but for how long?

My own bias is showing through here, the JVM is irrelevant on any platform I'm interested in working with these days.

Java might be dead but I got no replacement yet

There is no way I'm gonna use a dynamically typed language for system programming. There's no way I'm gonna use C# nor any other M$ lock-in language. And there's no way I'm gonna go back to a language that doesn't run on a VM.
Oh, and I dislike functional languages, I don't what professors think about them.
I think I'm not alone in that, so I think Java will be relevant for quite a while since I don't see much on the horizon that satisfies my criteria.

Google's Dart language is interesting to me.

If you were going to do a

If you were going to do a new language today and were serious about marketshare, I don't think you would bother with the JVM since (a) there is already lots of solid competition (Scala, Clojure) and (b) the JVM mindshare is no longer growing. Going for some emerging mindshare platform is better. I only mention the other platforms since there is opportunity for gaining market share; if you are a user stuck on the JVM you have plenty of choices for finding a Java alternative.

libraries

The JVM buys you libraries. That's why Clojure was such a huge win, there finally was a LISP with a modern library set, "an acceptable LISP" Building a language is easy compared with building an entire library infrastructure. The Java libraries are pretty much the best out there. Assuming my language is doing the kinds of stuff one would do in Java... yeah I'd target the JVM.

In terms of VMs the JVM is not interesting. In terms of a wealth of practical libraries, ...

system programming

If you are doing system programming why are you worried about lock in? All systems programming languages lock you in the platform, depending on what part of the platform you are addressing. And why would yo do system's programming on a VM?

What exactly do you mean by "system's programming"? I'm thinking you are using the word differently.

system programming.equals(large system)

By system programming I mean a large application or group of applications (system of applications). Like the kind of application(s) you find inside many large institutions that do all the enterprise management.

Precise control of data

Systems programming to me means: predictable (and usually high) performance, precise control over data representations, and low-level interactions with either or both of devices and system calls. I think scale isn't relevant. After all, the very first UNIX kernels were only a few thousand lines of code, but were undoubtedly systems programs.

I see. The way the word is

I see. The way the word is generally used here is the way Ben is using it. Systems programming is about efficiency and low level operations.

So you are looking for

1) Static
2) Good support for enterprise applications
3) VM (i.e. no lockin)
4) No functional.

I agree Java is a good fit for that requirement set. I think the JVM is likely the main VM for a while. The only major one of the horizon is Parrot and that is less mature. Other languages like JRuby, Scala and Clojure are using it so the JVM could easily be a standard and Java the "systems programing language" (in Ben and my sense) for that environment.

Personally I think Clojure is the most interesting though Scala is more mature and more popular. AspectJ?

The interesting stuff in higher level languages is mainly not fitting those criteria. Either dynamic or functional or both. As far as JVM, I think it is less relevant. Hardware systems are getting more stable than they were when OpenSystems was a big deal. And again Java fills the niche nicely when cross platform is a must.

You can take a look at Candle

Ted, I share your sentiment about programming languages today. Many Java and JavaScript derivatives are just fine tuning these two languages without making quantum leap. And I think functional languages' awkwardness at making controlled side-effects limited their adoption. That's why I invented Candle.

Candle is a major progress in programming (at least, that's my personal opinion). The major improvements over existing general-purpose programming languages are:

  • Built-in hierarchical data processing: XML and similar hierarchical Data (like JSON, MIME, etc) can be directly processed by the language, without additional data mapping.
  • Advanced query support: advanced query supporting XPath, XQuery, XSLT. One line of query in Candle/XQuery would easily requires dozens of lines of code in Java.
  • Advanced pattern support: Candle offers a pattern language that unifies RegEX, RELAX NG, BNF and allows you to easily match patterns on characters, nodes and items. Again, something not easily achieved in Java without using DSL.
  • Separation of side-effects: a mechanism use by Candle to cleanly separate functional programming from procedural programming. It's a mechanism much simpler than monad.

Of course, Candle is still at early stage. But it's an effort to show that programming language can evolve beyond OOP.

Its interesting when I look

Its interesting when I look at your Candle examples what I'm thinking is something like ASP, PHP or ColdFusion. Perhaps I'm missing the point, or being led too much by the examples but that would be the comparison I see.

Candle is more then ASP or PHP

Thanks for taking look at Candle. :-) The sample code at the moment are not really showing the power of Candle. I'll add more interesting ones.

Candle is based on XQuery. The major difference between Candle/XQuery and ASP/PHP is that the former read and write XML/HTML as a hierarchical data, whereas the latter treat XML/HTML as string. The former are 4G query languages, the latter are just 3G languages. The difference is as huge as SQL DB vs. plain text DB.

hieararchy

I see, that makes sense. That is a major improvement over ASP and PHP.

Mindshare is capped and zero-sum

Like audience share, mindshare is capped at 100% and is a zero-sum game. There is no such thing as a platform with large and rapidly growing mindshare: it can be one or the other, or neither (e.g. awk or Common Lisp) but not both.

In addition, C# is not a Microsoft-lockin language.