THE JAVASCRIPT DELUSION
AND WHY JAVA WILL CONTINUE TO RULE THE BUSINESS WORLD
JUGBD MEETUP 6.0
HOW IT ALL BEGAN
HISTORY
In 1995, the company recruited Brendan Eich with the goal of
embedding the Scheme programming language into its Netscape
Navigator.
Before he could get started, Netscape Communications collaborated
with Sun Microsystems to include in Netscape Navigator Sun's more
static programming language Java, in order to compete with Microsoft
for user adoption of Web technologies and platforms.
… the company needed a prototype. Eich wrote one in 10 days, in May
1995.
https://en.wikipedia.org/wiki/JavaScript
Picture Credit: By Darcy Padilla - http://web.archive.org/web/20140209081556/http://blog.mozilla.org/press/bios/brendan-eich/ http://web.archive.org/web/20131108073412/https://blog.mozilla.org/press/files/2012/04/Thumbnail-Full_Eich_04.jpg, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=31783773
A LITTLE MORE HISTORY
2009
2010
NPM Logo: By Boris Vacher - derivative work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=35142030
Angular Logo: By AngularJS - https://github.com/angular/angular.js/tree/master/images/logo, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=31016280
2013
THE COOLEST
PLATFORM
THE HYPE CYCLE
By Jeremykemp at English Wikipedia, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=10547051
HOW DOES IT REALLY
COMPARE?
THE CATEGORIES
HOW DOES IT REALLY COMPARE?
• Execution model and being Functional
• Type system and compilation
• Build system & testing
• Refactoring
• Frameworks
• Standards
THE TALE OF BEING “FUNCTIONAL”
EXECUTION MODEL
• Inherently asynchronous — everywhere!
• Functional — not by choice!
• Callback hell
CALLBACKHELL.COM
fs.readdir(source, function (err, files) {
if (err) {
console.log('Error finding files: ' + err)
} else {
files.forEach(function (filename, fileIndex) {
console.log(filename)
gm(source + filename).size(function (err, values) {
if (err) {
console.log('Error identifying file size: ' + err)
} else {
console.log(filename + ' : ' + values)
aspect = (values.width / values.height)
widths.forEach(function (width, widthIndex) {
height = Math.round(width / aspect)
console.log('resizing ' + filename + 'to ' + height + 'x' + height)
this.resize(width, height).write(dest + 'w' + width + '_' + filename, function(err) {
if (err) console.log('Error writing file: ' + err)
})
}.bind(this))
}
})
})
}
})
THE TALE OF BEING “FUNCTIONAL”
EXECUTION MODEL
• Inherently asynchronous — everywhere!
• Functional — not by choice!
• Callback hell
• Callback → Promise → Generators → async-await
• async-await is still a hell, just a bit better one
• Stack trace is useless in most cases in production! (Oh yeah yeah, they are solving it… 😴)
OH YEAH, WE HAVE TYPES DUDE!
TYPE SYSTEM
• Types are not needed
• It’s much faster to program without types
• OK OK, we have Flow! Gradual typing!
• TypeScript too, but wait a second, it’s not JavaScript!
• Our type system is more advanced than Java!
IT’S A MYTH!
NO NEED TO COMPILE!
• You don’t need to compile in JavaScript!
• Faster feedback for programmers!
• You need to transpile in any non-trivial project
• Orders of magnitude slower than Java compilation
• What happened to the “fast feedback” carrot?
WE HAVE TOO MANY!
BUILD SYSTEM
• Grunt? Gulp? Broccoli? Brunch? Back to Make and shell scripts?
• You know gulp, right?
HERE IS A GULP CONFIG
const gulp = require( 'gulp'),
del = require('del'),
nib = require('nib'),
jeet = require('jeet'),
rupture = require('rupture'),
nano = require('cssnano'),
processURL = require('postcss-url'),
through = require('through2'),
pump = require('pump'),
memCache = require('gulp-memory-cache'),
cache = require('gulp-cached'),
rev = require('gulp-rev'),
gulpIf = require('gulp-if'),
gutil = require('gulp-util'),
stylus = require('gulp-stylus'),
useref = require('gulp-useref'),
uglify = require('gulp-uglify'),
plumber = require('gulp-plumber'),
postcss = require('gulp-postcss'),
revReplace = require('gulp-rev-replace'),
webpack = require('webpack'),
WebpackDevServer = require('webpack-dev-server'),
webpackConfig = require('./webpack.config');
WE HAVE IT!
BUILD SYSTEM - 2
• Grunt? Gulp? Broccoli? Brunch? Back to Make and shell scripts?
• You know gulp, right?
• Bundlers? RequireJS → Browserify → Webpack
• Modules? AMD → CommonJS → ES6
• Compare to Java:
• Build: ant or maven, based on clear criteria
• Module: JAR, from beginning to now
ENDLESS CHOICES!
TESTING
• Mocha, Chai, Karma, Chutzpah, JSUnit, Lab, Code
• Jasmine, Jest
• Just too many choices!
• Compare to Java:
• Spring Test - nothing close to it in JavaScript
• JUnit or TestNG
AND JAVASCRIPT? FORGET IT!
REFACTORING
• Incredibly hard, due to the dynamic nature
• WebStorm is the only IDE that even attempts to do it
• Code tends to be write once
• Limits the size of the project and team
• Microservices inevitable at a point ➟ with all its overhead
THE MORE THE MERRIER!
FRAMEWORKS
• Express, koa, hapi, sails, seneca
• No clear winners
• Compare to Java:
• Nothing that even comes close to JEE or Spring
WE DON’T DO THEM HERE!
STANDARD INTERFACES
• Complete lack of anything like:
• JDBC — for SQL
• JMS — for message queues
• JTA — for transaction management
• JPA — for ORM. Actually, nothing close to any serious ORM!
• Servlet Specs — change between servlet/app servers
• Same issue in other non Java platforms too
WHEN IT COMES TO LARGE BUSINESS ENVIRONMENTS
SEROUSLY LACKING
• No distributed TX management
• Hard to change DB and messaging/queue
• No winning backend framework
• Constant change
• Lack of documentation
IN BIG BUSINESS
WHEN IT MAKES SENSE
• Heavily interactive front-end
• Back-end support for such a front-end
• Glue between REST services
• Streaming
”
“
— Mojahedul Hoque Abul Hasanat (Masum)
DO NOT CHOOSE JAVASCRIPT FOR
THE WRONG REASONS
HIRING FRONT-END ENGINEERS!
career@backpackbang.com
THANK YOU!
Mojahedul Hoque Abul Hasanat
just.unix@gmail.com
@just_unix

More Related Content

PPTX
Saving Time By Testing With Jest
PDF
Responsive, adaptive and responsible - keynote at NebraskaJS
PDF
Quo vadis, JavaScript? Devday.pl keynote
PDF
Modern javascript
KEY
Enterprise Strength Mobile JavaScript
PPT
Next generation frontend tooling
KEY
improving the performance of Rails web Applications
PDF
The Silver Bullet Syndrome by Alexey Vasiliev
Saving Time By Testing With Jest
Responsive, adaptive and responsible - keynote at NebraskaJS
Quo vadis, JavaScript? Devday.pl keynote
Modern javascript
Enterprise Strength Mobile JavaScript
Next generation frontend tooling
improving the performance of Rails web Applications
The Silver Bullet Syndrome by Alexey Vasiliev

What's hot (20)

PDF
Webinar - Matteo Manchi: Dal web al nativo: Introduzione a React Native
PDF
Troubleshooting Node.js
PPTX
WordPress Development Environments
KEY
Cloud tools
PDF
Java and the Web
PDF
JSFoo-2017 Takeaways
ODP
Cvcc performance tuning
PDF
Testing Mobile JavaScript
PDF
9 anti-patterns for node.js teams
PPTX
Engage 2019 - De04. Java with Domino After XPages
PPTX
How NOT to get lost in the current JavaScript landscape
PDF
Use all the buzzwords
PDF
ClojureScript: I can't believe this is JavaScript
PPTX
Untangling spring week11
PPTX
Node.js Getting Started &amd Best Practices
PPTX
Node Primer
PDF
The Real World - Plugging the Enterprise Into It (nodejs)
PPTX
Mean stack
PPT
Smarr Oscon 2007
PDF
Building software by feature with immutable infrastructures on AWS
Webinar - Matteo Manchi: Dal web al nativo: Introduzione a React Native
Troubleshooting Node.js
WordPress Development Environments
Cloud tools
Java and the Web
JSFoo-2017 Takeaways
Cvcc performance tuning
Testing Mobile JavaScript
9 anti-patterns for node.js teams
Engage 2019 - De04. Java with Domino After XPages
How NOT to get lost in the current JavaScript landscape
Use all the buzzwords
ClojureScript: I can't believe this is JavaScript
Untangling spring week11
Node.js Getting Started &amd Best Practices
Node Primer
The Real World - Plugging the Enterprise Into It (nodejs)
Mean stack
Smarr Oscon 2007
Building software by feature with immutable infrastructures on AWS
Ad

Similar to The JavaScript Delusion (20)

PPTX
After the LAMP, it's time to get MEAN
PDF
JavaScript for Enterprise Applications
PDF
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
PPTX
Java script framework
PDF
An introduction to Node.js
PDF
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
ODP
Javascript Update May 2013
PDF
JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK
PDF
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
PPT
Node and Azure
PPTX
Using Javascript in today's world
PDF
Node.js an Exectutive View
PPTX
mearn-stack-new_ccvbhbhvgvgcdszsxdxfcf.pptx
PDF
2015 - Introduction to building enterprise web applications using Angular.js
PPTX
Java vs. Node.js
PDF
JavaScript_ The Backbone of Modern Software and Web Development.pdf
PDF
High quality Front-End
PDF
Choosing Javascript Libraries to Adopt for Development
PDF
Node.js vs. java which one should you choose for backend development
PPTX
NodeJS - Server Side JS
After the LAMP, it's time to get MEAN
JavaScript for Enterprise Applications
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
Java script framework
An introduction to Node.js
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
Javascript Update May 2013
JavaScript Revolution - 5/Nov/13 - PrDC Saskatoon, SK
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
Node and Azure
Using Javascript in today's world
Node.js an Exectutive View
mearn-stack-new_ccvbhbhvgvgcdszsxdxfcf.pptx
2015 - Introduction to building enterprise web applications using Angular.js
Java vs. Node.js
JavaScript_ The Backbone of Modern Software and Web Development.pdf
High quality Front-End
Choosing Javascript Libraries to Adopt for Development
Node.js vs. java which one should you choose for backend development
NodeJS - Server Side JS
Ad

Recently uploaded (20)

PDF
EIS-Webinar-Regulated-Industries-2025-08.pdf
PDF
Introduction to MCP and A2A Protocols: Enabling Agent Communication
PDF
Ensemble model-based arrhythmia classification with local interpretable model...
PDF
CXOs-Are-you-still-doing-manual-DevOps-in-the-age-of-AI.pdf
PDF
Planning-an-Audit-A-How-To-Guide-Checklist-WP.pdf
PDF
MENA-ECEONOMIC-CONTEXT-VC MENA-ECEONOMIC
PDF
CEH Module 2 Footprinting CEH V13, concepts
PDF
NewMind AI Weekly Chronicles – August ’25 Week IV
PDF
The-2025-Engineering-Revolution-AI-Quality-and-DevOps-Convergence.pdf
PDF
Examining Bias in AI Generated News Content.pdf
PDF
Advancing precision in air quality forecasting through machine learning integ...
PDF
giants, standing on the shoulders of - by Daniel Stenberg
PDF
SaaS reusability assessment using machine learning techniques
PPTX
AI-driven Assurance Across Your End-to-end Network With ThousandEyes
PDF
“The Future of Visual AI: Efficient Multimodal Intelligence,” a Keynote Prese...
PDF
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
PDF
Altius execution marketplace concept.pdf
PDF
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
PDF
4 layer Arch & Reference Arch of IoT.pdf
PDF
substrate PowerPoint Presentation basic one
EIS-Webinar-Regulated-Industries-2025-08.pdf
Introduction to MCP and A2A Protocols: Enabling Agent Communication
Ensemble model-based arrhythmia classification with local interpretable model...
CXOs-Are-you-still-doing-manual-DevOps-in-the-age-of-AI.pdf
Planning-an-Audit-A-How-To-Guide-Checklist-WP.pdf
MENA-ECEONOMIC-CONTEXT-VC MENA-ECEONOMIC
CEH Module 2 Footprinting CEH V13, concepts
NewMind AI Weekly Chronicles – August ’25 Week IV
The-2025-Engineering-Revolution-AI-Quality-and-DevOps-Convergence.pdf
Examining Bias in AI Generated News Content.pdf
Advancing precision in air quality forecasting through machine learning integ...
giants, standing on the shoulders of - by Daniel Stenberg
SaaS reusability assessment using machine learning techniques
AI-driven Assurance Across Your End-to-end Network With ThousandEyes
“The Future of Visual AI: Efficient Multimodal Intelligence,” a Keynote Prese...
AI.gov: A Trojan Horse in the Age of Artificial Intelligence
Altius execution marketplace concept.pdf
A hybrid framework for wild animal classification using fine-tuned DenseNet12...
4 layer Arch & Reference Arch of IoT.pdf
substrate PowerPoint Presentation basic one

The JavaScript Delusion

  • 1. THE JAVASCRIPT DELUSION AND WHY JAVA WILL CONTINUE TO RULE THE BUSINESS WORLD JUGBD MEETUP 6.0
  • 2. HOW IT ALL BEGAN HISTORY In 1995, the company recruited Brendan Eich with the goal of embedding the Scheme programming language into its Netscape Navigator. Before he could get started, Netscape Communications collaborated with Sun Microsystems to include in Netscape Navigator Sun's more static programming language Java, in order to compete with Microsoft for user adoption of Web technologies and platforms. … the company needed a prototype. Eich wrote one in 10 days, in May 1995. https://en.wikipedia.org/wiki/JavaScript Picture Credit: By Darcy Padilla - http://web.archive.org/web/20140209081556/http://blog.mozilla.org/press/bios/brendan-eich/ http://web.archive.org/web/20131108073412/https://blog.mozilla.org/press/files/2012/04/Thumbnail-Full_Eich_04.jpg, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=31783773
  • 3. A LITTLE MORE HISTORY 2009 2010 NPM Logo: By Boris Vacher - derivative work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=35142030 Angular Logo: By AngularJS - https://github.com/angular/angular.js/tree/master/images/logo, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=31016280 2013
  • 5. THE HYPE CYCLE By Jeremykemp at English Wikipedia, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=10547051
  • 6. HOW DOES IT REALLY COMPARE?
  • 7. THE CATEGORIES HOW DOES IT REALLY COMPARE? • Execution model and being Functional • Type system and compilation • Build system & testing • Refactoring • Frameworks • Standards
  • 8. THE TALE OF BEING “FUNCTIONAL” EXECUTION MODEL • Inherently asynchronous — everywhere! • Functional — not by choice! • Callback hell
  • 9. CALLBACKHELL.COM fs.readdir(source, function (err, files) { if (err) { console.log('Error finding files: ' + err) } else { files.forEach(function (filename, fileIndex) { console.log(filename) gm(source + filename).size(function (err, values) { if (err) { console.log('Error identifying file size: ' + err) } else { console.log(filename + ' : ' + values) aspect = (values.width / values.height) widths.forEach(function (width, widthIndex) { height = Math.round(width / aspect) console.log('resizing ' + filename + 'to ' + height + 'x' + height) this.resize(width, height).write(dest + 'w' + width + '_' + filename, function(err) { if (err) console.log('Error writing file: ' + err) }) }.bind(this)) } }) }) } })
  • 10. THE TALE OF BEING “FUNCTIONAL” EXECUTION MODEL • Inherently asynchronous — everywhere! • Functional — not by choice! • Callback hell • Callback → Promise → Generators → async-await • async-await is still a hell, just a bit better one • Stack trace is useless in most cases in production! (Oh yeah yeah, they are solving it… 😴)
  • 11. OH YEAH, WE HAVE TYPES DUDE! TYPE SYSTEM • Types are not needed • It’s much faster to program without types • OK OK, we have Flow! Gradual typing! • TypeScript too, but wait a second, it’s not JavaScript! • Our type system is more advanced than Java!
  • 12. IT’S A MYTH! NO NEED TO COMPILE! • You don’t need to compile in JavaScript! • Faster feedback for programmers! • You need to transpile in any non-trivial project • Orders of magnitude slower than Java compilation • What happened to the “fast feedback” carrot?
  • 13. WE HAVE TOO MANY! BUILD SYSTEM • Grunt? Gulp? Broccoli? Brunch? Back to Make and shell scripts? • You know gulp, right?
  • 14. HERE IS A GULP CONFIG const gulp = require( 'gulp'), del = require('del'), nib = require('nib'), jeet = require('jeet'), rupture = require('rupture'), nano = require('cssnano'), processURL = require('postcss-url'), through = require('through2'), pump = require('pump'), memCache = require('gulp-memory-cache'), cache = require('gulp-cached'), rev = require('gulp-rev'), gulpIf = require('gulp-if'), gutil = require('gulp-util'), stylus = require('gulp-stylus'), useref = require('gulp-useref'), uglify = require('gulp-uglify'), plumber = require('gulp-plumber'), postcss = require('gulp-postcss'), revReplace = require('gulp-rev-replace'), webpack = require('webpack'), WebpackDevServer = require('webpack-dev-server'), webpackConfig = require('./webpack.config');
  • 15. WE HAVE IT! BUILD SYSTEM - 2 • Grunt? Gulp? Broccoli? Brunch? Back to Make and shell scripts? • You know gulp, right? • Bundlers? RequireJS → Browserify → Webpack • Modules? AMD → CommonJS → ES6 • Compare to Java: • Build: ant or maven, based on clear criteria • Module: JAR, from beginning to now
  • 16. ENDLESS CHOICES! TESTING • Mocha, Chai, Karma, Chutzpah, JSUnit, Lab, Code • Jasmine, Jest • Just too many choices! • Compare to Java: • Spring Test - nothing close to it in JavaScript • JUnit or TestNG
  • 17. AND JAVASCRIPT? FORGET IT! REFACTORING • Incredibly hard, due to the dynamic nature • WebStorm is the only IDE that even attempts to do it • Code tends to be write once • Limits the size of the project and team • Microservices inevitable at a point ➟ with all its overhead
  • 18. THE MORE THE MERRIER! FRAMEWORKS • Express, koa, hapi, sails, seneca • No clear winners • Compare to Java: • Nothing that even comes close to JEE or Spring
  • 19. WE DON’T DO THEM HERE! STANDARD INTERFACES • Complete lack of anything like: • JDBC — for SQL • JMS — for message queues • JTA — for transaction management • JPA — for ORM. Actually, nothing close to any serious ORM! • Servlet Specs — change between servlet/app servers • Same issue in other non Java platforms too
  • 20. WHEN IT COMES TO LARGE BUSINESS ENVIRONMENTS SEROUSLY LACKING • No distributed TX management • Hard to change DB and messaging/queue • No winning backend framework • Constant change • Lack of documentation
  • 21. IN BIG BUSINESS WHEN IT MAKES SENSE • Heavily interactive front-end • Back-end support for such a front-end • Glue between REST services • Streaming
  • 22. ” “ — Mojahedul Hoque Abul Hasanat (Masum) DO NOT CHOOSE JAVASCRIPT FOR THE WRONG REASONS