JS is known to be a de facto client-side development language for a long time, but its identity as a client-side only is changing with the development of frameworks like node which made it accessible for development for all other platforms. It has the most vibrant community and having continuous growth with new and exciting libraries coming every day.
This post is all about how you can use js to become a multi-stack developer, not just a web developer. Multi-stack developer in this post means that you should be able to make an application for all of the platforms out there like android, ios, windows, mac, Linux, embedded devices, gaming consoles, and virtually anything. We are going to summarize this post saying JS is the language to rule them all. There has never been any language which is so versatile and powerful like js which could be used to build any kind of application you want with knowledge of the single programming language.
The possible use case of JS
Game Development frameworks like unity, cocos2d it made the game developers reuse existing JS skills and code sets to deploy their games across all of the gaming platforms. Libraries like Johnny, five js enabled developers to target their app to the IOT based applications making the JS a great language to rule all platforms and ecosystems.
We can use JS in all of the following platforms,
1. Native Mobile App Development
2. Desktop Application Development
3. Web Frontend Development
4. Web Backend Development
4. Embedded System and IoT applications development
5. Game development
1. Web Frontend development
Front end development typically involves writing code for browsers which runs in client computers.Front end development handles all kinds of user interaction to the website making it dynamic and responsive. Although the purpose of front end development remained the same, tools techniques and the way how we create a front end application has been totally changed. Front end development has now become more managed, quick and effective. We can now implement dozens of features in client side without needing to implement that in server sides such as routing, templating etc. using server just for limited tasks such as data manipulation and storage.
We can even build a feature-rich application just using REST API’s, without dealing with much more complexity of backend development. Developing web applications with great interactivity is completely possible with well-managed code. It could be proved by the growing popularity of frameworks such as Vue, Angular and react and their adaptation by .different industries in their enterprise products. At past, jquery helped to streamline the development of interactive applications by providing a quick and easy way to manipulate DOM. But managing large application was still the big challenge back then. Adding more and more separated code base have made the making of large applications really harder. Every problem obviously has the solution, so JS developers found the way to solve that with dedicated frontend frameworks providing data binding, component-based design and routing in its inherent design. This being said, although the JS has been the de-facto language for front end development since its beginning, the way how we use the JS has completely been changed in the past few years.
Now it has become far better than its predecessors.JS is the defacto language of frontend development it will rule this world for a long time from now on because of its wide popularity and compatibility. My preferred choice in front end development is Vue JS which is the greatest framework with the easy and quick learning curve. It’s so easy to migrate your existing web applications to vuejs with far less code and ease of use. It also has a large number of UI and component library such as electron ,bootstrap-vue, vuetify making responsive and modern web applications a lot easier.
2. Web Backend Development
Backend development typically involves writing applications targeted to the server side. Backend development involves implementing functionalities such as authentication, routing, content management, data storage, and retrieval etc.JS is typically a new language in backend development. Only after the development of node and the powerful node frameworks such as express and adonis js, it has become a viable choice for backend development. Node is popular for its speed and performance and inherent asynchronous computation technique, which makes writing real-time based applications like a breeze. Express is the most popular library in JS backend development which makes making REST API’s and routing very very easy and fast. Although node js based backend development is newer compared to other frameworks based on C# and PHP, JS community has created so many the tools and libraries making it a real competitor to the existing frameworks.
One great thing nodejs based backend development is that it is now completely possible to use JS for both backend and frontend of your application making it full stack development tool.
If someone has a skill of JS then he/she could obviously utilize that knowledge for making a complete application just utilizing JS ecosystem.JS based package manager named NPM has millions of packages streamlining your development process making it easy by enabling the reuse of hundreds of existing packages and libraries. It could be said that almost everything you need to implement has been written by someone and has libraries ready to serve you. Tools like yarn and NPM make it too much easier to include external packages in your existing project and build your project. Overall JS is a great tool for backend web development in 2019. My preferred tools are express and adonis js which provides a full experience of Laravel/ROR based ecosystem in js based development.
Some popular backend frameworks in js are Adonis, Express, SailsJS etc.
3. Mobile development
Cross-platform development remained a difficult task until the past few years. Writing applications which run on all platforms such as ios and android with single code base have been a very difficult challenge because of huge UI and platform differences among them. This has been solved – previously by utilizing the web view component of each platform and using HTML, CSS, and js to make web-based hybrid apps running inside a sandbox of web component. Although this has made cross-platform development a lot easier it still posed lots of problems such as lack of access to native API’s and device functionality, lack if native looks and feel, and tons of other limitations.
4. Desktop application development
Desktop development typically involves creating an application for desktop OS such as windows and mac with offline running capability. Unlike web applications. desktop applications could be high performance and access the resources and functionalities provided by OS directly.Java and .NET dominated the desktop application development market for a long time – really really long time. Back past few years, these were the only viable alternative to make an enterprise-grade desktop application.
With node js, development of the desktop application is completely possible as it provides the runtime to run node based application on top of the operating system. Some frameworks such as electron js utilize it for building completely native desktop application providing all access the existing JS libraries and native OS functionalities. With these frameworks, you can not just target one platform but multiple desktop OS such as Linux mac and windows with an absolutely similar code base. It also proves API for accessing core desktop functionalities such as file system and system API’s making desktop development with js a good alternative. Desktop application development with JS offers different advantages as compared to others such as rapid development, cross-platform deployment, the rich ecosystem of libraries, rapid build and deployment etc.
Some popular desktop application development frameworks are Electron JS,NW js,Meteor,proton native etc.
5. Embedded System and IOT related Development
IOT development involves making an application for the internet of things and embedded systems such as automated devices, smart home appliances, and robots. The day when everything with electrically powered will be connected is not so far away. As most of the IoT devices have limited processing power, development of applications for such device is not so easy compared to other platforms.IOT has gained huge popularity in recent years because of its wide adaptation as well as its huge applications. Development of IOT and embedded system typically involved writing codes in very low-level languages such as C and assembly.
Now with advancement in ULSI and some popular chips like raspberry PI it is possible to get high-performance ecosystem on IoT related devices at low cost and energy usage.
6. Game development
Game development is significantly different from all above because of its inherent nature.Games are typically made for purpose of entertainment.
The game typically requires significantly faster devices with huge processing capabilities. Because of that game development also involves writing high-performance applications in high-performance language.
C++ has been the so popular choice for many years for game development because of its performance and object-oriented capability.
But because of its high complexity, Hard learning curve, and small community its been changing – especially for an indie as well as small game development.
JS has already replaced Actionscript with flash for web-based game development because of html5 and its many new functionalities with the added benefit of not needing any 3rd party plugins. Engines such as WebGL made the development of 3D and highly complex games accessible even in web browsers without having to lose significant performance.JS also made game development easier and faster with many frameworks such as phaser and unity.
One major benefit of JS based web development is that we could target all platforms out there with almost the same code base. If you have good skills in JS you could make any kinds of game you wish targeting platform of your choice with ease. There are tons of game development framework in JS and you could choose any of them based on your skills and need.
You could easily deploy games to the desired ecosystem and testing game is also far easier because you could run js based games in your browser without needing to have dedicated devices. There are tons of libraries specially targeted for game development helping developers to boost performance and reduce development time. Overall we can conclude that JS is a great language even for game development. Some widely popular game development frameworks in js are Unity, Phaser, Babylon, Pixi, play canvas, kiwi etc.
Thanks for reading this article. Do not forget to share your thoughts regarding it. Thank you.