With any luck this should become a series of postings on new and emerging languages and I am going to begin on familiar territory with, somewhat counter intuitively, one of the most widely adopted languages of them all; Java. Java has gained a bad reputation within the communities of the up and coming dynamic languages; Python, Ruby and their peers, for its perceived bloat, boilerplate and seemingly endless determination to over-engineer. Goslings decision to recycle much of the C++ syntax for his new language was a pragmatic one at the time, aiming to ensure the language the best possible chance of survival and adoption in a world heavy on C family programmers. It worked, oh did it work. Unfortunately for Java though a largely unforeseen movement was taking place within the backstreets of programmer land where language terseness, readability and programmer enjoyment were being prioritised over a programs computational efficiency.“Java is C++ without the guns, knives, and clubs” – James Gosling, Co-Inventor Of JavaThis prioritisation lead to the emergence of languages which have become, for many, the ‘programmers choice.’ There are doubtless wars of words between them, which is the true path to divine happiness?, but what they all do is; make programming fun, intuitive and, above all, extremely productive. You only have to look to the existence of _why’s Hackety Hack project to see the compelling simplicity advantage. Would you want to try and teach programming to a child with java? The ability to prototype programs in minutes instead of hours, expressing control-flow in linguistic order and the incorporation of functional paradigms, in a pragmatic salute to simplicity and expressivity, has made returning to Java for the day job a chore for many and an impossibility for some. That is until Charles Nutter (founder of the JRuby project) and Ryan Brown found themselves in the same situation while writing JRuby and working at Google respectively. “It is better to create a language than curse the Java” – Charlese ProverbIt was Charles who sparked the movement by asking the question; Does it have to be the case that Java with all its performance, libraries, functionality, portability and tooling is destined to be hated for its syntax? Well the simple answer is categorically no.Mirah was born.The beautiful lovechild of Ruby and Java; Mirah, which was for a small time known by the awful name of Duby, offers a fabulous combination of its mothers looks and its fathers brains resultant, in a truly cogent alternative to tiresome development. By inheriting, to a large extent, the Ruby syntax and coding style and incorporating many of its most compelling features, from numeric ranges through closures and on to hash parameters, the language has much the feel and appearance of developing in a modern dynamic language. Acceding Java’s most compelling technologies also brings the aforementioned features, performance, libraries etc. and better yet, being both byte code and language compatible means that no matter what it can take the place of Java. Let’s jump in: Sorry I couldn’t help myself. Though it does identify a feature; the main method is implicit. Anyway: Looks good no? Simple, concise, expressive. Well so it should, in fact I can’t for the life of me work out why general programming languages have ever been charged with a task other than making the coders life happier, anyway, I digress. So what does the language bring to the table?Pluggable type inference, compilation and checking. No additional runtime library. Maps straight to the JVM runtime. Extensible backend allowing for new output targets; CLR, C, Fortran, COBOL lol… What does all that mean? Well, it means it’s modifiable, customisable and ripe for some brains to get in there and help with its direction. It also means that creating your own additions to the language is hugely simple too. Anyway, imagine if writing dynamic/duck typed Java could be as easily as this: Happily, it is (you will need to use the JVM 7 beta though.) Dynamic types are already a working feature of the language mopping up those occasions where type safety is too restrictive. Pragmatism through and through. All Java libraries are exposed as, well… It is just Java we are writing. It just happens to be Java using a slightly different syntax. Many say that syntax shouldn’t be a persuasive argument for or against the use of a language, and obviously in most cases it isn’t, however, it is equally true that syntax can effect the simplicity its users have in developing and maintaining within that language. Let’s look at these two snippets of code: The use case is the same but the second provides the functionality with so much more elegance (in my opinion of course.) Its intentions are somehow more obvious and this is merely a trivial snippet of code. Daydream and think of how your complex threaded java app could be instantly simplified… Pass a block here a simplified loop there and suddenly the difficulty inherent in the syntax is reduced. Even writing graphical applications with cross-platform compatibility features becomes trivial: Status?Mirah is currently demonstrably under heavy development as can be seen at its Github repository and there are a few issues which are currently awaiting resolution, however, it is usable right now and there are some seriously awesome features in the pipeline too. So if you’re finding that you are losing your marbles with the geological pace of Java production I implore you to give it a go. Read the code, check out the examples and get involved in the community. If nothing else it may supercharge your web app development but more likely; it may well be the best thing to happen to Java since, umm, Java. VideoFor those hungry for more here is a video of Charles (Mirah King) at presenting the then “Duby” and “Surinx”, both of which have become subsumed by Mirah at confreaks a few years ago.The comic found at the top of the article is from the fantastic Geek And Poke Java