JavaScript is everywhere. It’s currently the 7th most popular programming language on the planet according to the Tiobe index. But basic JavaScript isn’t too magnificent. It isn’t the easiest language to work with and brings with it some challenges, the most troublesome being how hard it is to write manageable and scalable code with ease. This kind of sucks because of how widely used the language is.

JavaScript is the uncontested standard for browser based programming. Once Node.js hit the scene JavaScript started to take over server side programming as well. The arrival of hybrid apps brought it into the world of mobile development making it even more prominent. Realizing this trend a ton of languages that compile to JavaScript were created to make developers lives easier which is what I am here to share with you today. Due to the abundance of JavaScript alternative languages, I have tried to cover the modern and more widely used ones to make your life easier.



Languages that compile to JavaScript: The 12 best alternatives to JavaScript

Back at the end of 2009 Jeremy Ashkenas made the first CoffeeScript commit calling it “the mystery language” with a compiler written in Ruby. A few months later the Ruby compiler was replaced with one written in pure CoffeeScript and the GitHub page was receiving over 300 hits per day. Now CoffeeScript is the most widely used language among the alternatives to JavaScript. It can run in all of the same environments that JavaScript can run in, can run locally on a Node server, and it’s available as a npm package.

One of the syntax differences to help you understand the feel of CoffeeScript is that there are no semicolons which gives it the feel of Ruby. Another big difference is that some JavaScript keywords and features are deprecated in the name of simplicity including function and var which will throw syntax errors.

Update (Sept, 2017): Coffee Script 2.0.0 is now in Beta5 stage – whatever that Beta5 means:) This is what they say about it in short:

What does CoffeeScript 2.0 bring? It’s main advantage is that that now the compiler produces ES2015+ JavaScript. CoffeeScript supports can run natively in Node 7.6+, meaning that Node can run CoffeeScript’s output without any further processing (a couple of exceptions apply, check the website)

One advantage of CoffeeScript is that it is a clear language with lots of code examples.

A visual feedback and front-end issue tracker for developers, web designers and project managers

Anders Hejlsberg of Microsoft created this intuitive JavaScript alternative with his background of C# in mind, which you clearly see hints of throughout this strict JavaScript superset. This language also adds optional static typing and object-oriented programming based on classes, bolstering its power. One of the most useful features of this language is that you can use pre-existing JavaScript code, libraries, and frameworks directly in a TypeScript project.

TypeScript utilizes definition files that contain type information of existing JavaScript libraries enabling other programs to use values defined within these definition files as if they were statically types Typescript entities. Popular libraries such as JQuery, MongoDB, and D3.js all have third party header files as well. The TypeScript compiler is written in TypeScript and licensed under the Apache 2 License.

What’s good about TypeScript?

Every piece of JavaScript code is valid TypeScript and therefore it integrates much better than CofeeScript or Dart languages.

Aligns with future JavaScript standards.

Overall, Typescript is a solid and powerful alternative to JavaScript. It had 7 million downloads last months on GitHub last month (Aug. 2017) – so it is widely used.

Imagine if CoffeeScript, Go, Python, C#, and Swift all somehow had a baby together. Well, essentially they did… and it ended up being an eight-legged arthropod, Spider. For starters, Spider went down the dynamic route as opposed to the static one. Reason being that JavaScript is already dynamic, and that makes interacting with otherwise dynamic code a lot more simple when the entire system is dynamic. Unlike a completely new indentation-based syntax like CoffeScript, Spider preserves JavaScript’s familiar syntax. Spider embraces JavaScript’s prototype-based object oriented programming and is fully compatible with already existing JavaScript libraries. The language is extremely safe and fixes many of JavaScript’s problems such as == automatically compiling to ===, and the typeof operator supporting regexp, date, array, and more. Overall, due to the fact that this language was created based off of the errors and mishaps of many others, it is a very fluid and strong language, one of the best alternatives to JavaScript.

Are you a front-end developer? This tool will save you hours of headache

This language was created by Kasper Lund and Lars Bak whom also created the V8 JavaScript engine contributing to Google Chrome being the leading web browser. This class-based, single inheritance, object-oriented language with C-style syntax is precompiled using the dart2js compiler to become JavaScript. What is interesting about Dart is it can run in its own VM with several unusual properties including a unified internal instruction set to precompile Dart code before execution.

A huge plus about Dart is that it has the goodness of libraries like JQuery right into the language. They got rid of names like getElementByTagName and replaced it with a query that takes J-Query-like parameters to find what you need. They also standardized the internal data structures used to describe the DOM, eliminating the need to remember method calls like has ChildNodes and firstChild.

If Google uses Dart for a number of their applications, I think it is fair to say that it is a robust and scalable platform.

Sebastian McKenzie is – an Australian developer – is the creator of Babel and Babel is licensed under MIT.

Babel has support for the latest version of JavaScript through syntax transformers. These plugins allow you to use new syntax – Babel is trying to cover all browsers by default. As the result of this, the generator is far more verbose than it perhaps should be.

Babel can convert JSX syntax and strip out type annotations.

Pluggable: Babel is built out of plugins. There is a set of existing plugins or you can develop your own. They also offer a plugin generator template to make it easier.

On the downside, Babel 6 requires some configuration before you can start using it properly. They are working on release 7.0 since February 2017 so we expect it will be out by the end of this year.

Babel is also a pretty popular alternative, with its 10 million downloads per months from Github in August 2017 it is more popular than TypeScript.

Elm is created mainly by one person called ‎Evan Czaplicki as a PhD thesis work. There is no large community behind it like behind some of the others.

Unlike hand-written JavaScript, Elm code does not produce runtime exceptions in practice. Instead, Elm uses type inference to detect problems during compilation and give friendly hints. This way problems never make it to your users.

While Babel sometimes gets negative comments for its speed, ELM has great performance. Elm uses a virtual DOM implementation, optimised for simplicity and speed.

If you would like to get into Elm, check out the free ELM tutorial.

Haxe is an open source toolkit based on a modern high level strictly typed programming language, a state-of-the-art light-speed cross-compiler, a complete cross-platform standard library, and ways to access to each platform’s native capabilities.

Haxe allows you to develop for Web, iOS, Android, Blackberry, Windows, OSX, Linux and others, all at once, without the need to switch languages and maintain separate code bases. Support for even more platforms and languages is under development.

Haxe can not only compile to JavaScript, but also to ActionScript, Flash AVM bytecode, C++, Neko, PHP, C# (.NET) and Java.

Besides the free community support, Haxe also has a paid support plan making it a good alternative for corporates.

Traceur was announced at JSConf in 2011 and was built in JavaScript. It takes ECMAScript Edition 6 (ES6) (including classes, generators, destructuring and much more) and compiles it down to regular Javascript (ECMAScript Edition 5 [ES5]) that runs in your browser.

It has only 57 contributors on GitHub – which is much less than most of the competitors. So I assume Traceur is less widespread among the developer community. Check out Traceur on GitHub.

If you mainly work with Ruby but you need to compile it to JavaScript then Opal is for you. It comes packed with the Ruby corelibrary and it is both fast at runtime and small in its footprint.

Opal produces plain JS so you are free to use it in conjunction with any libraries, plugins or widgets you want. Also there is opal-jquery project – which is an opal wrapper around jquery – so you can use jquery directly from opal as well as use jquery plugins.

Opal on GitHub

Phil Freeman is the man behind of PureScript. He was inspired by Haskell when building it.

PureScript allows developers to identify errors at compile time, instead of at runtime, by using its expressive type system. At a simple level, this means no more undefined is not a function or similar errors, but we can use the type system to validate more interesting things like this function reads from (but does not write to) the filesystem.

The benefit of PureScript is that it is a strict language that debugs at runtime. PureScript is great if you want to use existing JS libraries, in an server client isomorphic application.

When do you want to consider another compiler? PureScript takes some time to learn. Also, the compiled code does not give as good of a performance as some of the other compilers mentioned earlier.

So which JavaScript alternative to choose?

CoffeeScript and TypeScript are definitely the most popular and mature JavaScript alternatives, but Spider sneaks in and has a younger factor going for it. Spider took the problems of previous JavaScript alternatives and JavaScript itself and fixed them allowing for an essentially better experience. Dart comes in the mix and gives you an entirely new option with powerful syntax options but remains less popular due to having less in common with traditional JavaScript. At the end of the day, you will have to choose what is right for you and your preferences. Check out each language by clicking on their names.

The makers of DebugMe hope that you like this post and would love it if you follow us on Twitter. We are tweeting about web design, UI/UX and development related topics multiple times a day. DebugMe is an issue tracking, project management and screenshot tool for every website project. Get visual feedback right away and solve front-end problems faster. Try it now for free.