JavaScript in my eyes is has a huge potential for the future of most traditional applications. JavaScript has blossomed since my days of using AJAX and simple built-in functions to meekly display some active content. I believe it has achieved what Java originally set out to be, a write once and run anywhere portable runtime. JavaScript now runs in our pockets, in desktop applications, and even the server side. Node.js, the leading environment for JavaScript, is comparatively lightweight to the Sun/Oracle JVM but nonetheless has revolutionized not just large monolithic application but front-end UI design and paradigm. npm has brought the packaging system into the language space and out of the apt and yum world. I’m most excited for the Electron desktop apps, which bundle native OS interfaces and calls in JavaScript code that you can use to create a standalone JavaScript app which can those interfaces to create windows or write and read files to disk.
I find it troubling though while easier to use and code, for me than PHP or Python, that I perceive a high barrier to getting into the cooler stuff beyond ECMAScript. I have had much difficulty in the past working with React, Ionic, and angular.js. These are all systems that contend using them will make application writing, maintenance, and deployment easier. They however, come with many terms and dependencies not familiar to me. Dependencies and tools like Webpack, JSX, and Babel slowed down my interest in JavaScript and felt worse than using HTML and CSS alone. An array of options is a natural side effect of npm and open package repositories. Virtualenv and pip do provide a dizzying number options as well for Python, but when I try to dive into JavaScript I come across more traps and cross-dependency issues. The language matures at incredible rates and I feel like you need to learn and re-learn constantly with no clear life cycle.
Aside from my personal frustration with learning the newest and arguably best things of JavaScript like node.js, I find the language to be greatly powerful. Being able to return a function from a function seems insane to my inner C code monkey. My favorite thing I remember from JavaScript primers is that a new object can simply be created with two characters, “{}”. Functional programming with objects and prototypes is something that seems to come naturally with the language. The fact that most devices sold in the last decade have some form of JavaScript interpreter seems to have poised it to be a major language beyond the traditional script tag.
I want to bring the web app, write once and deploy everywhere, philosophy to what I see as an increasingly fragmented platform space. Play Store and App Store don’t need to exist when we can deploy a single code base with native CSS views for screen sizes and native API translation with JavaScript. None of this Electron on desktop, Kotlin on mobile, except Swift on iOS mantra where we have to give app stores a cut because they own the language and platform. Open, native, but JavaScript and HTML applications for all users on all platforms under a unified code base is what really excites. Let’s hope W3C Service and Web Workers with JavaScript come to pass and push us to a more open and platform diverse computing world where every application can be deployed with free web standards.
This post makes use of the image Web-App by Quierounaapp.
This post is licensed under the CC Attribution-Share Alike 4.0