Dart vs JavaScript

In this post, we will briefly compare Dart vs JavaScript, the two competing programming languages in cross-platform mobile application development.

JavaScript reached the height of its popularity when it entered the fields of cross-platform mobile application development and server-side development. Since Node.js framework can be used for both frontend and backend development, JavaScript became highly popular among web developers. With the rise of React Native by Facebook, also mobile app developers started to move towards JavaScript. As a result, JavaScript remains the most popular programming language to this day. You can refer to this post for popularity comparison of different languages.

As an alternative to JavaScript or React Native, Google created the Flutter framework for cross-platform mobile application development. Flutter uses the Dart programming language which is not known by many developers. However, in contrast to React Native apps, apps built with Flutter look slick and much more native. A question then arises as to why did Google choose Dart over JavaScript or other programming languages for its mobile SDK?

What is Dart

Dart is a programming language that was initially used internally at Google to build web, server and mobile applications. Dart has been around since 2011, but it didn’t get any attention outside of Google. Dart compiles the source code similarly to other programming languages like JavaScript, but the standalone Dart SDK is shipped with a Dart VM. Unlike other programming languages, Dart has its own package manager called Pub. Dart started getting more attention in 2017 when Google officially announced Flutter beta for cross-platform mobile app development. Since then, the popularity of Dart has drastically increased, you can check this graph here to see how Dart has bumped up since the Flutter announcement at Google I/O conference in 2018. At the moment, mobile application developers are eager to adopt Flutter, but they have to learn Dart to get started. However, developers that have experience with OOPS languages can learn Dart easily.

What is JavaScript

JavaScript emerged as the language for rendering web pages along with HTML and CSS technologies. However, JavaScript later extended its arm to server-side, non-browser and mobile application development. JavaScript has been here around for the last 23 years, so it’s a mature and stable programming language. JavaScript supports both OOPS and functional programming style. Being dynamic in nature, it doesn’t require compilation of the code at the client side. JavaScript has its own package managers like NPM. When Facebook launched the React & the React Native frameworks for web and mobile application development, JavaScript became the most preferred and popular programming language at this moment of time. Nevertheless, there are mixed opinions about JavaScript among developers.

Now that we have covered what Dart and JavaScript are, let’s compare both languages on different criteria or comparison points.

Dart vs JavaScript Comparison

Ease of use

JavaScript has been around longer in the industry and is a mature and stable language. JavaScript is very easy to use. It has numerous frameworks and libraries available online, so developers can use the existing code for developing apps faster. However, in order to learn the JavaScript syntax, we need to have a basic technical knowledge of programming in general.

Dart is a fairly new language for most of the developers outside of Google. Although Google has put a lot of effort into documenting the Dart programming language, it’s still hard for developers to find solutions for specific problems. In terms of coding style and syntax, it has Java-like syntax, so developers from OOPS background can master and use Dart easily once they learn the basics.

Popularity

At the moment, JavaScript is everywhere. There is no device in the world that doesn’t run JavaScript. There are many companies that are using JavaScript frameworks for developing web and mobile applications. JavaScript can also be used for writing server-side applications and backends, so more and more developers have got hooked on JavaScript as a language during their career.

Before Google announced Flutter, Dart was nowhere to be found. However, since the announcement of Flutter in Google I/O, Dart has got drastic attention among the mobile developers as an alternative to React Native. The developers who didn’t like JavaScript as the programming language found Dart as an alternative option. As big companies like Google, Alibaba, etc adopted Flutter, the popularity of Dart raised considerably, but it’s not near as popular as JavaScript.

Productivity

JavaScript has countless frameworks and new JavaScript frameworks land in the market almost every year. As there is a need for developers to share and distribute code, there are thousands of JS packages available online. With the use of an existing package and experience of the developers, it’s easy for new developers to learn and adopt the JavaScript programming language. As JavaScript is a fast, lightweight and dynamic programming language, it boosts the developer productivity. Solutions to common problems can be found online easily, which is another reason that developers prefer JavaScript over other programming languages. Although JavaScript has countless libraries and frameworks available, not all of them are equally good. Also new JavaScript frameworks are released after a regular interval, so the developers constantly need to learn new frameworks, which hinders their productivity.

Dart has great documentation, but new or even experienced developers can get confused with the Dart language features. The Dart syntax is clean and mostly looks similar to Java, so developers with Java background can pick up the code syntax easily. However, developers may struggle a lot to find solutions to the problems in Dart. There is a comparatively small community and some online groups for Dart and Flutter, see the list here.

Learning curve

Learning JavaScript is not an easy task for non-programmers, but knowing the basic programming concepts makes JavaScript easy to learn. There are lots of online course and tutorials out there for the developers who wish to learn JavaScript.

Learning Dart can be daunting task for beginners as Dart is not a commonly used programming language and there are very limited courses or books available online for the Dart programming language. However, Google has extensive documentation of Dart on its official website, which helps programmers from other OOPS languages to pick up the Dart concepts easily. Some of its syntax might be unusual and come as a surprise, but with little bit of practice, developers will soon feel comfortable with Dart.

Speed

JavaScript is an interpreted language, so it might feel lighter and faster. It’s actually faster than other compiled languages like Java. However, Dart proved to be much faster when benchmarked against JavaScript. You can refer to the benchmark of Dart against NodeJS here.

Dart can be compiled both AOT and JIT which helps building apps in several ways as using JIT compilation can speed up development and AOT compilation can be used during the release process for better optimization. This technique has been used in Flutter app development.

Frontend vs Backend

JavaScript was originally used for frontend web development with HTML and CSS. However, with the rise of the Node.js framework, JavaScript is now widely used for server-side and backend development as well.

Dart is currently actively used with Flutter for developing the frontend of cross-platform mobile apps. Dart can be also used for web development, but there is no mention of Dart being used for backend development.

Type safety

Being an interpreted language, JavaScript supports both dynamic and duck typing. The application developer can type any code and JavaScript allows it, so JavaScript is not a type-safe language. Programming errors can only be found at the runtime.

Dart supports both loose and strong prototyping. As Dart is a compiled language, most of the programming errors can be found during the compilation. In that respect, Dart is more type-safe than JavaScript.

Web vs mobile

JavaScript has dominated both mobile and web app development with different frameworks. At one point, with the release of React and React Native from Facebook, JavaScript become a no-brainer for developing web and mobile apps for startups and small businesses. There is a large number of JavaScript frameworks still available in the market for developing web apps, progressive web apps and hybrid mobile apps, e.g Angular, vue.js, etc.

Similarly to JavaScript, Dart can be used for both mobile and web development. Dart became popular along with the Flutter framework for developing cross-platform mobile apps. Dart can be also used for developing web apps, but is actually used for this purpose very rarely. There are some courses and tutorials for developing web apps with Dart for those who would like to give it a try. Nevertheless, as Flutter’s popularity is growing fast, developers are starting to pay attention to Dart. There are also new Dart packages landing in the market. In the end, the future of Dart depends on the success of Flutter.

Editor/IDE support

There are some great IDEs and editors out there for JavaScript development. JavaScript doesn’t always require a full-fledged IDE as developers can use lightweight editors like VIM, Sublime Text, Emacs or Atom. However, there are some IDEs like WebStorm and Visual Studio Code that can work well for JavaScript application development.

Dart code can be also developed with lightweight editors like Sublime or VIM, but there are IntelliJ IDEA and Android Studio that come with the Dart plugin and are the most commonly used IDEs for Dart application development, especially for Flutter app development.

Commercial use

JavaScript is extensively used in big companies for developing both web and cross-platform mobile apps. Facebook is the pioneer in writing the React and the React Native framework that they used internally, but there are many other big companies that use JavaScript, including Instagram, Reddit, eBay, Slack, Airbnb, etc.

Dart was born in Google, so obviously it’s being used inside Google, but there are some big brands like Alibaba that also adopted Flutter and Dart for developing cross-platform mobile apps. There are some other big companies that use Dart, including Blossom, WorkTrails, Whale, Mobile, etc.

Dart vs JavaScript: Pros and cons

Pros of Dart

  • Open-source
  • Backed by Google and runs easily on Google Cloud Platform
  • Dart is approximately two times faster than JavaScript
  • Dart is type-safe and compiled with both AOT and JIT compilers

Cons of Dart

  • Dart is fairly new to the programmers and rarely used in the market.
  • Dart has very limited resources online and it’s hard to find solutions to problems.

Pros of JavaScript

  • JavaScript can be used for both web and mobile apps.
  • It can be used for both frontend and backend, so JavaScript can run on every device.
  • JavaScript has a huge community and great frameworks available online.
  • JavaScript is friendly with other languages, so many other apps can use JavaScript.

Cons of JavaScript

  • JavaScript has some libraries that are not of good quality.
  • Being a dynamic language, programmers can make big mistakes easily.
  • There are constant changes as a new framework lands after a regular interval.

Latest News on JavaScript and Dart

There is now machine learning support in JavaScript with TensorFlow.js. However, the popularity of JavaScript is gradually decreasing for the mobile app development market as lots of other new frameworks and languages seem appealing. Google also released a new version of V8 JavaScript engine recently.

The latest news related to Dart is that Google announced Flutter 1.2 and Dart DevTools at Mobile World Congress 2019. Flutter is growing fast and progressing with new features getting added day by day.

Conclusion

JavaScript and Dart are both solid choices for developing cross-platform mobile apps as they are being used in React Native and Flutter respectively. Dart is fairly new in comparison with JavaScript, but it has some cool features and great support from Google. At the moment, we can’t guess which one will dominate the future, but it’s sure that Dart has taken off very strongly.

Codemagic CI for Flutter