For almost a decade now, JavaScript is spoken of as one of the most demanded programming languages on the market. That is mostly because of its wide and growing range of usability and possibilities for developers who embrace its dynamic nature and learn it.
History
For the first few years after the creation of the web (1990s), websites were purely static. There was no option for any dynamic content after the page loaded. However, in the then growing web scene, there was a great need to remove that restriction. Shortly afterwards, Brendan Eich and his team of engineers from Netscape created the first version of a new programming language for browsers in just 10 days. Its first name was LiveScipt, and shortly afterwards it was changed to JavaScript, in order to take advantage of the popularity of the then already known Java programming language, although the two programming languages had nothing in common.
One would think that a company that created such programming language like JavaScript is at the very top of IT today, but the reality is completely different. Namely, after losing “browser war” to a much bigger player in the IT world at the time — Microsoft, the decline of the Netscape company began in 1999, so that today this company does not exist at all. This tells us a lot about the dynamism of the IT industry, and how companies take turns at the top. The situation is similar with technologies: new, more advanced tools are constantly being developed, so we must always be ready to learn new things.
However, the product that Netscape created, JavaScript, is now used on more than 95% of websites in the world. Not only that, JavaScript is used for developing programs for many other platforms, which we will cover in details little bit later.
Numbers
For the last 7 years in a row, JavaScript has been the most popular programming language chosen in the Stack Overflow Developer survey. On job search and offer sites, JavaScript ads account for 15–30% of all IT jobs, depending on the region, which is a large number if we take into account how many technologies and tools exist on the market now.
Stack Overflow Developer Survey 2020
These were just dry figures, let’s talk about the concrete things that led to them.
Frontend development
The most popular and largest part of JavaScript programming is definitely in frontend development, where a lot of time and effort has been invested in the development of new, advanced technologies. Partly because of that JavaScript still has no real alternative in frontend application development.
JavaScript was created with the goal of enabling dynamic content on web pages such as form validation, various alert dialogs to the user, etc., and not only has this goal been met, but today on web pages we can build various things like complex dynamic UI components, routing on client side without refreshing the website (SPA), send notifications to the user, use the user location and many other things.
Frontend development has been developing very fast in the last 10 years and new technologies and frameworks are appearing almost on a monthly basis. So when choosing a technology for your next project or career, you have a lot of choices, but you still need to consider a few things such as project specific features (which technology would solve its problems best?), number of people on the project, technology stability and future support, technology knowledge if you used it before, market situation for that technology.
Currently the most popular frontend technologies among others are ReactJS, Angular, VueJS, Ember, Svelte. By knowing some of these, you can get a job in almost all major IT companies.
Backend development
Because JavaScript was created with the primary goal of enabling dynamic content on static web pages, few expected JavaScript to be used in backend programming as well. With the advent of NodeJS in 2009, JavaScript began to be increasingly used in the development of backend services. NodeJS is a technology created on the base of Chrome’s V8 JS engine. The principle on which it works enables the execution of a large number of parallel requests, which has found application in the development of many types of projects like backend APIs, real-time and video communication applications, audio and video processing applications, IoT applications, microservices and serverless architectures, etc. In addition to large application, NodeJS is not suitable for all types of projects. As is the case with almost everything technology, for some projects it may be inappropriate, so care should be taken when choosing it for development.
Thanks to many tools developed on top of NodeJS such as Express, Koa, Meteor, Sails, project development in NodeJS is very fast and some things can be obtained out-of-the-box with these tools, or with very little extra effort.
Many world-famous companies use NodeJS in production: Netflix, Uber, PayPal, Trello, LinkedIn, Yahoo, Mozzila, Ebay.
Desktop applications
Although there has been less talk about desktop applications in recent years, they are still very relevant. So, if you have some frontend development knowledge and experience you can use technologies like Electron, Proton or NW.js to develop multiplatform desktop applications. You probably heard of or even used some of the applications developed using these technologies: Slack, VS Code, Atom, WhatsApp Desktop.
How they actually work? These technologies run main file (usually named main.js) that creates application windows which contain rendered web pages with the added power of interacting with the native GUI (graphical user interface) of your operating system. In other words, these are web applications wrapped in a desktop windows.
Mobile development
In last two decades there was tremendous rise in using mobile devices. People use them now more than PCs, which shifted companies’ focus slightly from desktop and web to mobile users. Different phone manufactures use different OS for their phones, which makes it more complex and more expensive to develop mobile application that will be available to users on all platforms.
Technologies like jQuery Mobile, PhoneGap, Apache Cordova, React Native, NativeScript, Ionic, Titanim let you write your application using HTML, CSS, and JS, then they create build for different mobile platforms. The frameworks have special modules that let them use native mobile features, like camera, GPS location, swipe interactions, etc. They also let you maintain one code base for several different mobile platforms.
Although these technologies enable faster and cheaper development of mobile applications, they are not suitable for every project. They are widely used by startup companies, because of the things mentioned above, but there can be complications with applications that use many native OS modules, or some modules that doesn’t have implemented support for technology at all. On the other side, they are very suitable for projects that in some way consume data obtained from backed APIs and use little or no native OS modules at all.
IoT
Every month we see a new smart device developed for our car, home or office. We can have them all connected to our PC, mobile phone or tablet and communicate with them to ease our work. IoT is definitely disrupting many industries, and companies invest more and more resources in developing software for their devices. IoT devices usually have limited hardware and software capacities so companies must pay close attention to choose the right technology for writing programs for it.
JavaScript can be used in several ways to develop or support programs for IoT devices. It can be used for creating lightweight web applications that will send events to devices that don’t have capabilities to store and run even the smallest JavaScript programs. Another way is to implement the JavaScript code through memory-optimized engines in the device itself. Frameworks like JerryScript can be used to run the devices. Third option are single-board computers (SBCs), where JavaScript or Node.js code can be executed in these devices without any issues.
There are couple of things why JavaScript is suitable for using in IoT programming:
- Node.js is open-source and can be used to handle a large number of requests generated by IoT devices such as sensors, beacons, transmitters and motors
- JavaScript memory management — JavaScript uses automatic allocation and deallocation: values are allocated when things are created (objects, strings, etc.) and freed automatically when they are no longer used, which eases developers to focus more on app logic and less on memory management.
- Event loops in JavaScript allow running various tasks without waiting for other tasks to be completed. This helps in responding to events in real-time, handling multiple tasks simultaneously and allowing multiple devices to respond to the same event.
Some popular and used technologies and frameworks for IoT programming are: JerryScript, IoT.js, Cylon.js, Johnny-Five.
Machine learning
Although we often hear that ML can be done only using Python or Java, last couple of years its functions can be developed using some web scripting languages, like JavaScript.
Using ML in the browser opens up many possibilities as browsers “communicate” directly with client: product can have access to events of different devices like webcams and microphones, which can provide video and audio input for ML model.
TensorFlow.js is probably most popular for machine learning JavaScript library. It is created by Google as an open-source framework for training and using machine learning models in the browser. TensorFlow.js has some pros like popularity, performance, security and range of application, but also some cons like limitations on data, limited support for hardware acceleration, single-threaded. It can be used for: object detection, automatic picture manipulation, offline game opponents, content recommendation engine, activity monitoring and so on.
Bonus
But that’s not all, if you decide to program in JavaScript, bonus features are waiting for you. :)
VR/AR
VR/AR applications have been very popular in recent years, and there are already several technologies in the JavaScript ecosystem such as Three.js and A-Frame to develop applications for these devices.
Wearable/smartwatch applications
Some smartwatch and sport equipment makers use JavaScript for developing applications for their devices. You can use NativeScript to create applications for Wear OS, Google’s OS for wearable things. Smartwatch maker Pebble has created Pebble.js, a JavaScript framework that allows a developer to create an application for their line of watches in JavaScript.
Drone programming
You can use JavaScript and NodeJS to write programmes for drones.
UI/UX designer
If you are involved in UI/UX design, knowing JavaScript will definitely help you in your work, because in addition to design, you can also implement the things you design, which is always desirable and very well paid, because companies don’t have to hire two persons — one to design, other to implement it. Also, while designing, you will know what can be implemented at all, so you don’t design something that is not implementable.
Cyber security engineer
Certain security measures for web servers and web applications require implementation in JavaScript, so knowing this programming language will improve your cyber security skills.
NoSQL databases
Many NoSQL databases store data in JSON format, which stands for JavaScript Object Notation, so if you are familiar with JavaScript you won’t have problems working with those databases. Also, many of them have native support for JavaScript technologies like NodeJS and its frameworks and libraries.
Learning JavaScript
I hope that you are convinced that JavaScript is a programming language for you and that you can’t wait to start learning, so I’ll give you a few tips on how to do it.
My first and top advice is to read one or more of the quality books on JavaScript, like Eloquent JavaScript or You Don’t Know JS. You can read it online for free. With these books you will learn the basics, how JavaScript actually works. These basics will help you master any JavaScript-related technology more easily later.
After the book(s), start working on simple projects, using help from tutorials and courses, but write programs in plain JavaScript, no advanced frameworks and libraries yet. Seeing how things work in practice will help you settle knowledge you gained reading the books or watching tutorials or courses.
After simpler projects start developing slightly more complex projects. In this phase you can start using node and npm, and some library or framework.
After that, learn the basics of TypeScript and start learning the technology for your dream job. If you have not yet decided what you want to do in life or you just want to get programming job, start learning some of the currently most popular technologies such as ReactJS, Angular, React Native, which will lead you to decent job the fastest.
Conclusion
As you probably already think now, it is almost impossible to find a device for which you cannot write a program using JavaScript.
As usual in life, everything we don’t know seems complex to us, so does JavaScript. Many consider it a complex and illogical programming language, however, when you start learning and using it, you realize that everything is logical and well documented, that JavaScript is simply flexible and that is why it is so popular and widespread. Investing your time in JavaScript will pay off many times over.