Web application development - The past, the present, the future

Juho Vepsäläinen
Juho VepsäläinenWeb Developer en varies
Juho Vepsäläinen
Web application development
The past, the present, the future
v2.0 2023-09-12
What to expect
Early web
Browser wars
Languages of the web
Story of three runtimes
Rise of the SPAs
Full stack JavaScript
Beyond SPAs
Early web
Source: https://www.ll.mit.edu/about/history/sage-semi-automatic-ground-environment-air-defense-system
Prehistory
• 1963 - SAGE, the
fi
rst air defense system of the US was activated [Lincoln]
• 1965 - Two computers at MIT Lincoln Lab communicated with one another
using packet-switching technology [Zimmermann]
• 1969 - ARPANET, the predecessor of Internet was developed
• 1983 - Internet started as ARPANET and Defense Data Network (DDN) moved
to use the TCP/IP protocol
Prehistory cont.
• 1984 - The Finnish Ministry of Education established Finnish University
Network (FUNET) to develop a computer network for universities and
researchers [FinInternet]
• 1988 - Finland gains access to ARPANET through NSFNET. Jarkko Oikarinen
invented the Internet Relay Chat (IRC) [FinInternet]
• 1989 - Some FUNET members can access Internet via Datanet [FinInternet]
• Further reference: How the Internet Happened: From Netscape to the iPhone
Source: A Review on Client-Server based applications and research opportunity - Santosh Kumar
1992
World wide web
• Both hypertext and information
retrieval and access systems
existed before the web was
invented. www combined the
ideas (hyperlinks). [Berners-Lee]
• Websites can consist of data
indices and individual pages that
may either exist in a
fi
le system
or be completely virtual
• Later on search engines emerged
Source: http://info.cern.ch/hypertext/WWW/TheProject.html
1993
cgi-bin
• cgi-bin was an early attempt to
describe web servers coming
from National Center for
Supercomputing Applications
(NCSA) [cgi-bin]
1994
PHP [Lerdorf]
• Started as cgi-bin binaries
authored in C by Rasmus Lerdorf
to cover common tasks (logging,
tracking, server-side includes
etc.)
• PHP 2 morphed the solution to a
language (big university project)
• Starting from PHP 3 (Suraski,
Gutmans), the language took o
f
1998
Document Object Model
• "...a platform- and language-neutral
interface that allows programs and
scripts to dynamically access and
update the content, structure and style
of documents” [Wood]
• "Before DOM, every browser, editor,
and transformation engine handled
things their own way. With DOM, you
can write scripts that will work in of
di
ff
erent browsers and editors” [Phillips]
• Independent of a programming
language [MozillaDOM]
Source: https://pixabay.com/photos/lone-tree-tree-oak-clouds-1934897/
MPAs
Early applications (esp. e-commerce)
Source: https://www.simicart.com/blog/spa-vs-mpa/
Browser wars
Source: https://www.webdesignmuseum.org/gallery/google-1998
Nexus
1990 - Berners-Lee [Routley]
Lynx
1992 - University of Kansas [Lynx]
ViolaWWW
1992 - University of California [Viola]
Erwise
1992 - Helsinki University of Technology [Erwise]
NCSA Mosaic
1993 - NCSA [Mosaic]
1994
Netscape Navigator
• "After his graduation from UIUC in 1993, Marc Andreessen (former Mosaic)
teamed up with Jim Clark, the founder of Silicon Graphics, to produce a
commercial version of the browser” [Routley]
• "The company soon staged a wildly popular IPO, which saw the 16-month-
old startup reach a valuation of nearly $3 billion.” [Routley]
• Bought by America Online (AOL) for $4.2 billion in 1998
1994
Internet Explorer
• "A new competitor “born” on the Internet is Netscape. We have to match and beat
their o
ff
erings…” - Bill Gates [Routley]
• "...captured Microsoft’s attention. Immediately after Netscape IPO, the
fi
rst version of
Internet Explorer (building o
ff
a licensed version of Spyglass' Mosaic) was released.
The browser wars had begun.” [Routley]
• "Released in August 1995, the new browser was a dud. Although it was free to
consumers and was bundled with Windows, it was also technically buggy and had
only a 3% to 4% share of the market in January 1996.” [Sebenius]
• "While trying to establish Internet Explorer in the browser market, Microsoft was also
investing hundreds of millions of dollars in its own online service, Microsoft Network
(MSN)” and went against America Online (AOL) [Sebenius]
1996
Netscape vs. Internet Explorer
Source: https://commons.wikimedia.org/w/index.php?curid=1128061
1996
Why did Microsoft win?
• "First, on March 11, 1995, Netscape and AOL announced a deal in which
Netscape appeared to have triumphed over Microsoft. ... Yet on March 12, the
very next day, AOL and Microsoft announced a stunning deal that supplanted
the Netscape-AOL agreement.” [Sebenius]
• Bill Gates sacri
fi
ced short and medium term position to win the browser wars
with the deal [Sebenius]
1998
Mozilla
• "The Mozilla project ... was intended to harness the creative power of
thousands of programmers on the internet and fuel unprecedented levels of
innovation in the browser market” [MozillaHistory]
• "After several years of development, Mozilla 1.0, the
fi
rst major version, was
released in 2002” [MozillaHistory]
• "In 2003, the Mozilla project created the Mozilla Foundation” [MozillaHistory]
• "Firefox 1.0 was released in 2004 and became a big success — in less than a
year, it was downloaded over 100 million times.” [MozillaHistory]
2008
Google Chrome
• "After developing a range of rich and complex Web apps, the company saw
that it was time to build a browser from scratch that could better handle
today's web” [Gray]
• "...innovated in four key areas, namely speed, simplicity, security and
stability” [Gray]
• Google wanted to bridge the gap between desktop and web applications
(later on PWAs and so on)
• One of the side e
ff
ects of the work was the birth of the highly performant V8
JavaScript runtime
2009
Internet Explorer vs. Google Chrome
Source: https://www.statista.com/chart/1438/browser-market-share-since-2008/
Languages of the web
Source: https://pixabay.com/photos/technology-computer-code-javascript-1283624/
1994
Cascading Style Sheets (CSS)
• In 1994 as the web was starting to
gain popularity, there was no way to
style documents
• Initial thinking of Tim Berners-Lee
was that styling is a browser level
concern
• Demand from content authors led to
the birth of
fi
rst draft of CSS in 1994
• To ensure browser compliance, so
called ACID tests were developed
starting from 1998
1995
HyperText Markup Language (HTML)
• A simple markup language used
to create hypertext documents
that are platform independent
[Berners-Lee]
• In use since 1990 but formalized
as a standard in 1995
1995
JavaScript
• Developed by Brendan Eich in ten
days at Netscape [Eich]
• "I am not proud, but I am happy that
I chose Scheme-ish
fi
rst-class
functions and Self-ish (albeit
singular) prototypes as the main
ingredients. The Java in
fl
uences,
especially y2k Date bugs but also
the primitive vs. object distinction
(e.g., string vs. String), were
unfortunate.” [Eich]
• Read: JavaScript: The First 20 Years
2012
TypeScript
• Microsoft’s TypeScript was a
successful attempt to bring
typing on top of JavaScript
• It came with features such as a
class syntax and di
ff
erent ways
to compose types
• It performs only a compile-time
check and it does not perform
runtime checks by design
Source: https://www.typescriptlang.org/
2015
ES2015
• ES2015, or ES6, was the
fi
rst major
version of the ECMAScript since
2009
• It included several major features
such as class syntax, o
ffi
cial module
syntax, arrow expressions to
mention a few
• Since ES2015, the standard has
been updated on a yearly basis to
avoid the addition of so many
features at once while keeping the
release cycle predictable
Source: https://babeljs.io/docs/learn/
2019
Web Assembly
• “…a safe, portable, low-level code
format designed for e
ffi
cient
execution and compact
representation” [WebAssembly]
• In other words, it's a good target for
higher level code
• Depending on the use case, it can be
at least as fast or even considerably
faster than plain JavaScript while
providing strong typing and a light
binary format [wasm]
Source: https://developer.mozilla.org/en-US/docs/WebAssembly/Understanding_the_text_format
Task for later: Look up Flash, Java (applets),
and Silverlight and consider what the web
might look like if the open web hadn’t won
Story of three runtimes
Source: https://pixabay.com/photos/macro-cogwheel-gear-engine-vintage-1452987/
First JavaScript runtimes
• 1996 - SpiderMonkey by Brendan Eich was the
fi
rst JavaScript runtime and it
was developed. It's still in use by Mozilla Firefox
• 1997 - Rhino was one of the
fi
rst major JavaScript engines published open
source (Java, still active)
• 2008 - V8 by Google is an open source JavaScript engine famous for its high
performance
• 2009/2020 - Chakra by Microsoft was initially proprietary but became open
source in 2020
2009
Jack, Narwhal, and Node.js
• Jack was an early port of Rack (Ruby) for the JavaScript JSGI web server
interface. The idea was to reach a standard implementation similar to what's
available for Ruby, Python (WSGI), or Perl (PSGI) [JSGI]
• Narwhal, built on top of Jack, went one step further to "a platform for creating
server-side JavaScript web applications and frameworks such as Nitro”
• Node.js went its own path and won the race (maybe due to faster innovation
and arguably due to leveraging V8)
2009
Node.js
• Ryan Dahl developed Node.js on Google's performant V8 runtime to allow
development of JavaScript based servers and tools
• From early on, Node.js leveraged the CommonJS module de
fi
nition. Later on
this became a problem but it served well in the beginning.
• Starting from early versions, Node.js captured the imagination of the
community and it took o
ff
fast as a technology in its
fi
rst years
• These days Node.js is used in a large variety of contexts (web servers,
electronics, Finnair planes)
2018
Deno
• Deno is Ryan Dahl's (Node.js) new JavaScript runtime
• Deno supports both JavaScript and TypeScript
• It comes with stronger emphasis on security than Node.js
• It supports an url based way to consume modules (npm is also supported)
• It's best to consider Deno as an opinionated toolkit as it comes with many
necessary tools out of the box
• Deno Deploy o
ff
ers an edge platform built around Deno runtime
2022
Bun
• Bun is a high performance JavaScript/TypeScript runtime developed using the
Zig low-level language by Jarred Sumner
• Since its introduction, it has raised brows across the JavaScript community
• In 2022, Bun raised $7m of funding for its development company called Oven
• In September 2023, the project reached 1.0
Node.js vs. Deno vs. Bun
• Node.js is the incumbent solution but does it have a long term future?
• Deno is more like a toolkit and it's approaching similar problems from a
di
ff
erent angle with more opinions
• Deno’s development seems to have sped up Node.js as well (new features
appear faster)
• For now, Bun seems like the same thing but faster although as a new solution
it comes with relative instability (bugs in APIs, no full compatibility always,
new quirks). Deno feels stable in comparison
Rise of the SPAs
Source: https://pixabay.com/photos/macbook-laptop-ipad-apple-computer-624707/
1999
Asynchronous JavaScript (AJAX)
• Before AJAX, any interaction on a page required navigation
• After Microsoft implemented XMLHttpRequest in Internet Explorer, performing
computation in the background without reloading became possible
[Woychowsky]
• It was only a few years later that the idea made it to the mainstream as Single
Page Applications (SPAs) became trendy. Essentially AJAX enabled SPA style
development in additional to key technologies like the History API
SPAs
Esp. social media platforms
Source: https://www.simicart.com/blog/spa-vs-mpa/
2002
Single-page applications (SPAs)
• Instead of refreshing pages like in classic Multi-Page Applications (MPAs),
SPAs rely on JavaScript and update the view dynamically based on user
interaction [Flanagan]
• The shift in mindset was enabled by AJAX and new DOM APIs (mainly the
History API)
• The adoption of the idea led to an explosion of frontend frameworks
• SPAs have challenges in the domains of Search Engine Optimization (SEO),
accessibility, and performance due to framework requirement and reliance on
JavaScript
SPAs vs. SSR vs. SSG [Pöyry]
Feature SSR (MPA) SPA SSG
Pre-rendered HTML ✓ ✓
Updates without
refresh
✓ Possible
Supports forms ✓ ✓
Through an external
service
O
ffl
ine support in
modern browsers
✓ Possible
2006
jQuery
• Provides abstractions over
common operations
• Became extremely successful
due to simple yet powerful
chaining API. Today 78.5% of
websites use jQuery
(w3techs.com)
Progressive enhancement
2008 - Aaron Gustafson - https://alistapart.com/article/understandingprogressiveenhancement/
2010
Angular.js
• Miško Hevery developed Angular.js for his
startup but as the startup failed, the SPA
framework ended up being open sourced
• If HTML would have been designed for
applications, it could have looked like
Angular.js [Sutar]
• Angular.js relied on custom directives
(HTML attributes) and provided two-way
data binding as one of its main selling
points
• The big innovation was so called digest
cycle during which data bindings would
be evaluated [Pashec]
Source: https://angularjs.org/
2010
Backbone.js
• Backbone.js lets you capture data
models that exposed events through
a data bus from which the views can
render on event. At the same time
views can trigger changes in the
data model. (MV*) [Osmani]
• It provided enough abstraction for
implementation of SPAs
• It's best to think Backbone.js as a
light helper for the implementation of
applications
Source: https://adrianmejia.com/backbone-dot-js-for-absolute-beginners-getting-started/
2010
Knockout.js
• Knockout.js implemented MVVM
architecture for the web and
relied on observable
implementation of its own for
dependency tracking [Papa]
2013
React.js
• Facebook's (Meta) React.js received its inspiration
from PHP
• React came with JSX, a HTMLish syntax of its own,
that let developers write JavaScript within HTML
• Unlike solutions before, it implemented idea known
as the Virtual DOM (VDOM)
• In other words, React maintains structure of its own
within memory for change tracking and then it
manipulates the real DOM in the background
• In addition, React put strong emphasis on the
concept of components
• React provides a function based API for
components in which logic can be implemented
using hooks
Source: https://react.dev/learn
2014
Vue.js
• Vue.js is a AngularJS inspired
web framework. Compared to
React, it comes with more
opinions out of the box and it
leverages directives
• There's also a lifecycle model
that's comparable to earlier
versions of React (changed with
hooks)
Source: https://vuejs.org/guide/introduction.html
2014
Marko
• Marko by eBay re-imagines
HTML as a language suitable for
reactive UIs. It provides a
declarative, progressive way to
develop
• Marko uses a compiler-based
approach to generate code
that's optimized both for the
server and the browser
Source: https://markojs.com/
Progressive Web Applications
2015 - PWAs are an attempt by Google to bridge the web with native mobile characteristics (persistency,
installation) [Lee]
2016
Svelte
• Svelte by Rich Harris is a
compiler-based approach for
developing web sites and
applications
• Svelte comes with a light syntax
of its own and it's reactive by
design
Source: https://svelte.dev/examples/hello-world
2016
Angular
• Angular is Google's successor to
earlier Angular.js
• To quote documentation, it is "A
component-based framework for
building scalable web
applications”
• It's a complete rewrite and it relies
heavily on TypeScript and RxJS
• Scope-wise Angular is
comparable to Vue.js
Source: https://angular.io/guide/what-is-angular
2016
Storybook
• Storybook is a tool designed for
developing style guides and design
systems
• Storybook started as a solution built on top
of webpack for React.js speci
fi
cally but it
has since then branched out to support
other bundlers and frameworks
• It is particularly useful for component
driven development as it helps you to
visualize your components and their
possible states
• It's possible to implement visual regression
testing and test automation with Storybook
Source: https://storybook.js.org/
Full stack JavaScript
Source: https://pixabay.com/photos/books-stack-book-store-1163695/
2013
Electron
• Electron was an early attempt to allow
development of desktop applications
using JavaScript
• Electron achieved the target by
wrapping Chromium, the open source
version of Chrome, and by providing
desktop speci
fi
c APIs for
fi
le access and
similar desktop speci
fi
c tasks
• The approach became highly successful
and these days many desktop
applications use Electron underneath.
As an example, VS Code, a popular
code editor, is built on top of it.
Source: https://www.electronjs.org/docs/latest/
2016
Next.js
• Next.js is a full stack React.js framework by
Vercel
• In other words, it covers all aspects starting
from the frontend and spanning to the backend
APIs
• Next.js integrates well with Vercel's hosting
solution and it can be deployed on their edge
network for improved performance
• Technically Next.js has been built on top of
webpack, Babel, swc, and other popular tools
so you could consider it as a distribution as well
• The scope of Next.js grows each year and these
days it includes speci
fi
c solutions for analytics,
e-commerce, and other domains
Source: https://nextjs.org/docs/getting-started/installation
2020
Remix
• Remix is a full stack framework built for
React.js
• To quote the site, it's "Focused on web
standards and modern web app UX,
you’re simply going to build better
websites”
• The key point about Remix is that it puts
heavy emphasis on how to connect data
to views
• Remix ships with a custom Form
component that's progressively enhanced.
In other words it works without JavaScript
enabled.
Source: https://remix.run/
Beyond SPAs
Source: https://pixabay.com/photos/fantasy-light-mood-heaven-lovely-2861107/
JavaScript size trend
Source: https://httparchive.org/reports/state-of-javascript?start=2013_04_01&end=latest&view=list
2019
SolidJS
• SolidJS is a reactive JavaScript
framework
• It was inspired by React but it
doesn't use VDOM. If React was
invented today, it would look
something like SolidJS
Source: https://www.solidjs.com/
2021
Astro
• Astro is a full stack framework
built with the islands architecture
in mind
• Astro does not ship JavaScript
by default
• Astro uses a custom format that
allows you to mix content and
JavaScript
Source: https://docs.astro.build/en/concepts/islands/
Islands architecture
Source: https://www.patterns.dev/posts/islands-architecture
2021
Fresh
• Designed to run speci
fi
cally on
Deno edge infrastructure
• Zero client-side cost by default
• Implements islands architecture
• Leverages Preact
Source: https://fresh.deno.dev/docs/getting-started/create-a-route
2021
Qwik
• Qwik is a new JavaScript
framework developed by Hevery
et al.
• Qwik leverages resumability over
hydration and has been
optimized to load light
(automatic code splitting)
• Qwik leverages JSX and adds
reactivity on top
Source: https://qwik.builder.io/docs/getting-started/
Key trends to note
• There is a clear shift towards edge computing on the web
• The latest generation of frameworks can be considered to be disappearing
(so-called disappearing frameworks)
• The shift from a content platform to an application platform is still ongoing
(friction in APIs)
• Consideration: Which technologies/techniques to use and when/where? How
much of these choices can be encoded to frameworks?
Read my booklet
“Disappearing frameworks explained”
(arXiv) to learn more
Thank you
Time for your questions
References
References
• [Lincoln] - History of Lincoln Laboratories - https://www.ll.mit.edu/about/history
• [Zimmermann] - Internet history timeline: ARPANET to the world wide web -
https://www.livescience.com/20727-internet-history.html
• [FinInternet] - History of the Finnish internet - https://siy.
fi
/history-of-the-
fi
nnish-
internet/
• [Berners-Lee] - World-Wide Web: the information universe - Tim Berners-Lee et
al.
• [cgi-bin] - https://en.wikipedia.org/w/index.php?
title=Common_Gateway_Interface&oldid=1102228140
References cont.
• [Lerdorf] - Programming Php - Rasmus Lerdorf et al.
• [Wood] - Document object model (dom) level 1 speci
fi
cation - Lauren Wood et
al.
• [Phillips] - Designers: the browser war casualties - Barry Phillips
• [MozillaDOM] - https://developer.mozilla.org/en-US/docs/Web/API/
Document_Object_Model/Introduction
• [Routley] - https://www.visualcapitalist.com/internet-browser-market-share/
• [Lynx] - https://en.wikipedia.org/wiki/Lynx_(web_browser)
References cont.
• [Viola] - https://en.wikipedia.org/wiki/ViolaWWW
• [Erwise] - https://en.wikipedia.org/wiki/Erwise
• [Mosaic] - https://en.wikipedia.org/wiki/Mosaic_(web_browser)
• [Sebenius] - Negotiating lessons from the browser wars - James Sebenius
• [MozillaHistory] - https://www.mozilla.org/en-US/about/history/
• [Gray] - Google chrome: The making of a cross-platform browser - James Gray
• [Eich] - https://brendaneich.com/2008/04/popularity/
References cont.
• [WebAssembly] - https://www.w3.org/TR/wasm-core-1/
• [wasm] - https://adservio.fr/post/how-fast-and-e
ffi
cient-is-wasm
• [jsgi] - https://en.wikipedia.org/w/index.php?title=JSGI&oldid=1037280622
• [Woychowsky] - AJAX: Creating web pages with asynchronous JavaScript and
XML - Edmond Woychowsky et al.
• [Flanagan] - JavaScript: The De
fi
nitive Guide - David Flanagan et al.
• [Pöyry] - Next.js ja muut isomor
fi
set sovelluskehykset - Tuomas Pöyry
References cont.
• [Sutar] - Angular JS and Its Important Component - Bibhishan Sutar
• [Pashec] - https://stackover
fl
ow.com/q/9682092
• [Lee] - Pride and prejudice in progressive web apps: Abusing native app-like
features in web applications - Jiyeon Lee et al.
• [Osmani] - Developing Backbone. js Applications: Building Better JavaScript
Applications - Addy Osmani
• [Papa] - https://docs.microsoft.com/en-us/archive/msdn-magazine/2012/
february/client-insight-getting-started-with-knockout
1 de 76

Recomendados

The future is mostly static por
The future is mostly staticThe future is mostly static
The future is mostly staticJuho Vepsäläinen
391 vistas70 diapositivas
Lean UX por
Lean UXLean UX
Lean UXRamakant Gawande
6K vistas46 diapositivas
How to Leverage AI to Enhance UI Testing por
How to Leverage AI to Enhance UI TestingHow to Leverage AI to Enhance UI Testing
How to Leverage AI to Enhance UI TestingApplitools
756 vistas31 diapositivas
UX Camp Nov 2023_upload.pptx por
UX Camp Nov 2023_upload.pptxUX Camp Nov 2023_upload.pptx
UX Camp Nov 2023_upload.pptxAmir Ansari
51 vistas77 diapositivas
DesignOps 101 por
DesignOps 101DesignOps 101
DesignOps 101Macy Fontaine
472 vistas29 diapositivas
Design Thinking 101 Workshop por
Design Thinking 101 WorkshopDesign Thinking 101 Workshop
Design Thinking 101 WorkshopNatalie Hollier
457 vistas54 diapositivas

Más contenido relacionado

La actualidad más candente

Dark Times for Dark Patterns por
Dark Times for Dark PatternsDark Times for Dark Patterns
Dark Times for Dark PatternsCristina Viganò
4.2K vistas76 diapositivas
COMP 4010 - Lecture 5: Interaction Design for Virtual Reality por
COMP 4010 - Lecture 5: Interaction Design for Virtual RealityCOMP 4010 - Lecture 5: Interaction Design for Virtual Reality
COMP 4010 - Lecture 5: Interaction Design for Virtual RealityMark Billinghurst
2.3K vistas127 diapositivas
Shaping and implementing a DesignOps function por
Shaping and implementing a DesignOps functionShaping and implementing a DesignOps function
Shaping and implementing a DesignOps functionMatt Gottschalk
544 vistas46 diapositivas
Design thinking por
Design thinkingDesign thinking
Design thinkingwebkeyz
764 vistas19 diapositivas
Mental Models and Concept Models por
Mental Models and Concept ModelsMental Models and Concept Models
Mental Models and Concept ModelsChristina Wodtke
7.1K vistas56 diapositivas
Virtual Environments and Web 3D – New Worlds with Old Problems? por
Virtual Environments and Web 3D – New Worlds with Old Problems?Virtual Environments and Web 3D – New Worlds with Old Problems?
Virtual Environments and Web 3D – New Worlds with Old Problems?Tracy Kennedy
5.9K vistas59 diapositivas

La actualidad más candente(20)

COMP 4010 - Lecture 5: Interaction Design for Virtual Reality por Mark Billinghurst
COMP 4010 - Lecture 5: Interaction Design for Virtual RealityCOMP 4010 - Lecture 5: Interaction Design for Virtual Reality
COMP 4010 - Lecture 5: Interaction Design for Virtual Reality
Mark Billinghurst2.3K vistas
Shaping and implementing a DesignOps function por Matt Gottschalk
Shaping and implementing a DesignOps functionShaping and implementing a DesignOps function
Shaping and implementing a DesignOps function
Matt Gottschalk544 vistas
Design thinking por webkeyz
Design thinkingDesign thinking
Design thinking
webkeyz764 vistas
Mental Models and Concept Models por Christina Wodtke
Mental Models and Concept ModelsMental Models and Concept Models
Mental Models and Concept Models
Christina Wodtke7.1K vistas
Virtual Environments and Web 3D – New Worlds with Old Problems? por Tracy Kennedy
Virtual Environments and Web 3D – New Worlds with Old Problems?Virtual Environments and Web 3D – New Worlds with Old Problems?
Virtual Environments and Web 3D – New Worlds with Old Problems?
Tracy Kennedy5.9K vistas
Design Thinking for Product Design Slide.pdf por Shristi Shrestha
Design Thinking for Product Design  Slide.pdfDesign Thinking for Product Design  Slide.pdf
Design Thinking for Product Design Slide.pdf
Shristi Shrestha233 vistas
Using Interaction Design Methods for Creating AR and VR Interfaces por Mark Billinghurst
Using Interaction Design Methods for Creating AR and VR InterfacesUsing Interaction Design Methods for Creating AR and VR Interfaces
Using Interaction Design Methods for Creating AR and VR Interfaces
Mark Billinghurst14.9K vistas
Virtual reality and its use in architecture por GOVIND GOPAL NAIR
Virtual reality and its use in architecture Virtual reality and its use in architecture
Virtual reality and its use in architecture
GOVIND GOPAL NAIR397 vistas
Web 1.0 2.0 3.0 por Likan Patra
Web 1.0 2.0 3.0Web 1.0 2.0 3.0
Web 1.0 2.0 3.0
Likan Patra1.9K vistas
The Role of Metaphor in Interaction Design por Dan Saffer
The Role of Metaphor in Interaction DesignThe Role of Metaphor in Interaction Design
The Role of Metaphor in Interaction Design
Dan Saffer36.1K vistas
Auditing your intranet content — Annette Corbett — DigiSEO por Intranet Now
Auditing your intranet content — Annette Corbett — DigiSEOAuditing your intranet content — Annette Corbett — DigiSEO
Auditing your intranet content — Annette Corbett — DigiSEO
Intranet Now662 vistas
Morgenbooster #2 experience design (short) v3 por 1508 A/S
Morgenbooster #2   experience design (short) v3Morgenbooster #2   experience design (short) v3
Morgenbooster #2 experience design (short) v3
1508 A/S603 vistas
Extended Reality - VR, AR, MR Applications and Future por Stephen Rhind-Tutt
Extended Reality - VR, AR, MR Applications and FutureExtended Reality - VR, AR, MR Applications and Future
Extended Reality - VR, AR, MR Applications and Future
Stephen Rhind-Tutt485 vistas
The Guide To Wireframing por Lewis Lin 🦊
The Guide To WireframingThe Guide To Wireframing
The Guide To Wireframing
Lewis Lin 🦊8.6K vistas
Emotion In Product Design por Luke Woolfson
Emotion In Product DesignEmotion In Product Design
Emotion In Product Design
Luke Woolfson16.1K vistas
Design for Startups por Hieu Nguyen
Design for StartupsDesign for Startups
Design for Startups
Hieu Nguyen31.8K vistas

Similar a Web application development - The past, the present, the future

AJAX the Great: The Origin and Development of the Dynamic Web (2007) por
AJAX the Great: The Origin and Development of the Dynamic Web (2007)AJAX the Great: The Origin and Development of the Dynamic Web (2007)
AJAX the Great: The Origin and Development of the Dynamic Web (2007)Fran Fabrizio
690 vistas51 diapositivas
Cmsc 100 (web programming in a nutshell) por
Cmsc 100 (web programming in a nutshell)Cmsc 100 (web programming in a nutshell)
Cmsc 100 (web programming in a nutshell)MaeEstherMaguadMaralit
878 vistas13 diapositivas
Java _ Definition & Facts _ Britannica.pdf por
Java _ Definition & Facts _ Britannica.pdfJava _ Definition & Facts _ Britannica.pdf
Java _ Definition & Facts _ Britannica.pdfRameswarGprec
11 vistas7 diapositivas
HTML for beginners por
HTML for beginnersHTML for beginners
HTML for beginnersSalahaddin University-Erbil
316 vistas71 diapositivas
web browser ppt por
web browser pptweb browser ppt
web browser pptShivalika Singh
16.1K vistas84 diapositivas
Web browser por
Web browserWeb browser
Web browserHardik Kakadiya
60.6K vistas17 diapositivas

Similar a Web application development - The past, the present, the future(20)

AJAX the Great: The Origin and Development of the Dynamic Web (2007) por Fran Fabrizio
AJAX the Great: The Origin and Development of the Dynamic Web (2007)AJAX the Great: The Origin and Development of the Dynamic Web (2007)
AJAX the Great: The Origin and Development of the Dynamic Web (2007)
Fran Fabrizio690 vistas
Java _ Definition & Facts _ Britannica.pdf por RameswarGprec
Java _ Definition & Facts _ Britannica.pdfJava _ Definition & Facts _ Britannica.pdf
Java _ Definition & Facts _ Britannica.pdf
RameswarGprec11 vistas
The story of the web por Chob Lab
The story of the webThe story of the web
The story of the web
Chob Lab1.8K vistas
Evolution of Cloud Computing por NephoScale
Evolution of Cloud ComputingEvolution of Cloud Computing
Evolution of Cloud Computing
NephoScale18.4K vistas
Evolution of web browsers ppt por Jyothi Reddy
Evolution of web browsers pptEvolution of web browsers ppt
Evolution of web browsers ppt
Jyothi Reddy19.5K vistas
.NET, OSS & Mono por Paul Rayner
.NET, OSS & Mono.NET, OSS & Mono
.NET, OSS & Mono
Paul Rayner490 vistas
9781305078444 ppt ch01 por Terry Yoast
9781305078444 ppt ch019781305078444 ppt ch01
9781305078444 ppt ch01
Terry Yoast156 vistas
Cloud Native Computing Foundation: How Virtualization and Containers are Chan... por Experfy
Cloud Native Computing Foundation: How Virtualization and Containers are Chan...Cloud Native Computing Foundation: How Virtualization and Containers are Chan...
Cloud Native Computing Foundation: How Virtualization and Containers are Chan...
Experfy65 vistas
- Describe in one or two paragraphs what is Web (8-10 lines) Your desc.docx por pjoseph6
- Describe in one or two paragraphs what is Web (8-10 lines) Your desc.docx- Describe in one or two paragraphs what is Web (8-10 lines) Your desc.docx
- Describe in one or two paragraphs what is Web (8-10 lines) Your desc.docx
pjoseph63 vistas

Más de Juho Vepsäläinen

Quick introduction to Qwik por
Quick introduction to QwikQuick introduction to Qwik
Quick introduction to QwikJuho Vepsäläinen
164 vistas42 diapositivas
fooConf - JavaScript frameworks of tomorrow por
fooConf - JavaScript frameworks of tomorrowfooConf - JavaScript frameworks of tomorrow
fooConf - JavaScript frameworks of tomorrowJuho Vepsäläinen
157 vistas61 diapositivas
JavaScript frameworks of tomorrow por
JavaScript frameworks of tomorrowJavaScript frameworks of tomorrow
JavaScript frameworks of tomorrowJuho Vepsäläinen
122 vistas58 diapositivas
The future is mostly static por
The future is mostly staticThe future is mostly static
The future is mostly staticJuho Vepsäläinen
68 vistas84 diapositivas
Web application development - The past, the present, the future por
Web application development - The past, the present, the futureWeb application development - The past, the present, the future
Web application development - The past, the present, the futureJuho Vepsäläinen
214 vistas266 diapositivas
Survive JavaScript - Strategies and Tricks por
Survive JavaScript - Strategies and TricksSurvive JavaScript - Strategies and Tricks
Survive JavaScript - Strategies and TricksJuho Vepsäläinen
5.2K vistas96 diapositivas

Último

DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t... por
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...Deltares
9 vistas26 diapositivas
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023 por
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023Upgrading Incident Management with Icinga - Icinga Camp Milan 2023
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023Icinga
36 vistas17 diapositivas
SUGCON ANZ Presentation V2.1 Final.pptx por
SUGCON ANZ Presentation V2.1 Final.pptxSUGCON ANZ Presentation V2.1 Final.pptx
SUGCON ANZ Presentation V2.1 Final.pptxJack Spektor
21 vistas34 diapositivas
SAP FOR CONTRACT MANUFACTURING.pdf por
SAP FOR CONTRACT MANUFACTURING.pdfSAP FOR CONTRACT MANUFACTURING.pdf
SAP FOR CONTRACT MANUFACTURING.pdfVirendra Rai, PMP
11 vistas2 diapositivas
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge... por
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...Deltares
16 vistas12 diapositivas
DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM... por
DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM...DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM...
DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM...Deltares
7 vistas40 diapositivas

Último(20)

DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t... por Deltares
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...
DSD-INT 2023 Thermobaricity in 3D DCSM-FM - taking pressure into account in t...
Deltares9 vistas
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023 por Icinga
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023Upgrading Incident Management with Icinga - Icinga Camp Milan 2023
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023
Icinga36 vistas
SUGCON ANZ Presentation V2.1 Final.pptx por Jack Spektor
SUGCON ANZ Presentation V2.1 Final.pptxSUGCON ANZ Presentation V2.1 Final.pptx
SUGCON ANZ Presentation V2.1 Final.pptx
Jack Spektor21 vistas
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge... por Deltares
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...
Deltares16 vistas
DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM... por Deltares
DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM...DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM...
DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM...
Deltares7 vistas
Citi TechTalk Session 2: Kafka Deep Dive por confluent
Citi TechTalk Session 2: Kafka Deep DiveCiti TechTalk Session 2: Kafka Deep Dive
Citi TechTalk Session 2: Kafka Deep Dive
confluent17 vistas
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI... por Marc Müller
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Dev-Cloud Conference 2023 - Continuous Deployment Showdown: Traditionelles CI...
Marc Müller31 vistas
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan... por Deltares
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...
Deltares10 vistas
Software testing company in India.pptx por SakshiPatel82
Software testing company in India.pptxSoftware testing company in India.pptx
Software testing company in India.pptx
SakshiPatel827 vistas
How to Install and Activate Email-Researcher por eGrabber
How to Install and Activate Email-ResearcherHow to Install and Activate Email-Researcher
How to Install and Activate Email-Researcher
eGrabber19 vistas
DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)... por Deltares
DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)...DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)...
DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)...
Deltares9 vistas
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko... por Deltares
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...
DSD-INT 2023 Simulation of Coastal Hydrodynamics and Water Quality in Hong Ko...
Deltares10 vistas
Advanced API Mocking Techniques por Dimpy Adhikary
Advanced API Mocking TechniquesAdvanced API Mocking Techniques
Advanced API Mocking Techniques
Dimpy Adhikary18 vistas
Roadmap y Novedades de producto por Neo4j
Roadmap y Novedades de productoRoadmap y Novedades de producto
Roadmap y Novedades de producto
Neo4j43 vistas
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ... por Deltares
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...
DSD-INT 2023 Wave-Current Interaction at Montrose Tidal Inlet System and Its ...
Deltares9 vistas
DSD-INT 2023 HydroMT model building and river-coast coupling in Python - Bove... por Deltares
DSD-INT 2023 HydroMT model building and river-coast coupling in Python - Bove...DSD-INT 2023 HydroMT model building and river-coast coupling in Python - Bove...
DSD-INT 2023 HydroMT model building and river-coast coupling in Python - Bove...
Deltares15 vistas
Tridens DevOps por Tridens
Tridens DevOpsTridens DevOps
Tridens DevOps
Tridens9 vistas

Web application development - The past, the present, the future

  • 1. Juho Vepsäläinen Web application development The past, the present, the future v2.0 2023-09-12
  • 2. What to expect Early web Browser wars Languages of the web Story of three runtimes Rise of the SPAs Full stack JavaScript Beyond SPAs
  • 4. Prehistory • 1963 - SAGE, the fi rst air defense system of the US was activated [Lincoln] • 1965 - Two computers at MIT Lincoln Lab communicated with one another using packet-switching technology [Zimmermann] • 1969 - ARPANET, the predecessor of Internet was developed • 1983 - Internet started as ARPANET and Defense Data Network (DDN) moved to use the TCP/IP protocol
  • 5. Prehistory cont. • 1984 - The Finnish Ministry of Education established Finnish University Network (FUNET) to develop a computer network for universities and researchers [FinInternet] • 1988 - Finland gains access to ARPANET through NSFNET. Jarkko Oikarinen invented the Internet Relay Chat (IRC) [FinInternet] • 1989 - Some FUNET members can access Internet via Datanet [FinInternet] • Further reference: How the Internet Happened: From Netscape to the iPhone
  • 6. Source: A Review on Client-Server based applications and research opportunity - Santosh Kumar
  • 7. 1992 World wide web • Both hypertext and information retrieval and access systems existed before the web was invented. www combined the ideas (hyperlinks). [Berners-Lee] • Websites can consist of data indices and individual pages that may either exist in a fi le system or be completely virtual • Later on search engines emerged Source: http://info.cern.ch/hypertext/WWW/TheProject.html
  • 8. 1993 cgi-bin • cgi-bin was an early attempt to describe web servers coming from National Center for Supercomputing Applications (NCSA) [cgi-bin]
  • 9. 1994 PHP [Lerdorf] • Started as cgi-bin binaries authored in C by Rasmus Lerdorf to cover common tasks (logging, tracking, server-side includes etc.) • PHP 2 morphed the solution to a language (big university project) • Starting from PHP 3 (Suraski, Gutmans), the language took o f
  • 10. 1998 Document Object Model • "...a platform- and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure and style of documents” [Wood] • "Before DOM, every browser, editor, and transformation engine handled things their own way. With DOM, you can write scripts that will work in of di ff erent browsers and editors” [Phillips] • Independent of a programming language [MozillaDOM] Source: https://pixabay.com/photos/lone-tree-tree-oak-clouds-1934897/
  • 11. MPAs Early applications (esp. e-commerce) Source: https://www.simicart.com/blog/spa-vs-mpa/
  • 14. Lynx 1992 - University of Kansas [Lynx]
  • 15. ViolaWWW 1992 - University of California [Viola]
  • 16. Erwise 1992 - Helsinki University of Technology [Erwise]
  • 17. NCSA Mosaic 1993 - NCSA [Mosaic]
  • 18. 1994 Netscape Navigator • "After his graduation from UIUC in 1993, Marc Andreessen (former Mosaic) teamed up with Jim Clark, the founder of Silicon Graphics, to produce a commercial version of the browser” [Routley] • "The company soon staged a wildly popular IPO, which saw the 16-month- old startup reach a valuation of nearly $3 billion.” [Routley] • Bought by America Online (AOL) for $4.2 billion in 1998
  • 19. 1994 Internet Explorer • "A new competitor “born” on the Internet is Netscape. We have to match and beat their o ff erings…” - Bill Gates [Routley] • "...captured Microsoft’s attention. Immediately after Netscape IPO, the fi rst version of Internet Explorer (building o ff a licensed version of Spyglass' Mosaic) was released. The browser wars had begun.” [Routley] • "Released in August 1995, the new browser was a dud. Although it was free to consumers and was bundled with Windows, it was also technically buggy and had only a 3% to 4% share of the market in January 1996.” [Sebenius] • "While trying to establish Internet Explorer in the browser market, Microsoft was also investing hundreds of millions of dollars in its own online service, Microsoft Network (MSN)” and went against America Online (AOL) [Sebenius]
  • 20. 1996 Netscape vs. Internet Explorer Source: https://commons.wikimedia.org/w/index.php?curid=1128061
  • 21. 1996 Why did Microsoft win? • "First, on March 11, 1995, Netscape and AOL announced a deal in which Netscape appeared to have triumphed over Microsoft. ... Yet on March 12, the very next day, AOL and Microsoft announced a stunning deal that supplanted the Netscape-AOL agreement.” [Sebenius] • Bill Gates sacri fi ced short and medium term position to win the browser wars with the deal [Sebenius]
  • 22. 1998 Mozilla • "The Mozilla project ... was intended to harness the creative power of thousands of programmers on the internet and fuel unprecedented levels of innovation in the browser market” [MozillaHistory] • "After several years of development, Mozilla 1.0, the fi rst major version, was released in 2002” [MozillaHistory] • "In 2003, the Mozilla project created the Mozilla Foundation” [MozillaHistory] • "Firefox 1.0 was released in 2004 and became a big success — in less than a year, it was downloaded over 100 million times.” [MozillaHistory]
  • 23. 2008 Google Chrome • "After developing a range of rich and complex Web apps, the company saw that it was time to build a browser from scratch that could better handle today's web” [Gray] • "...innovated in four key areas, namely speed, simplicity, security and stability” [Gray] • Google wanted to bridge the gap between desktop and web applications (later on PWAs and so on) • One of the side e ff ects of the work was the birth of the highly performant V8 JavaScript runtime
  • 24. 2009 Internet Explorer vs. Google Chrome Source: https://www.statista.com/chart/1438/browser-market-share-since-2008/
  • 25. Languages of the web Source: https://pixabay.com/photos/technology-computer-code-javascript-1283624/
  • 26. 1994 Cascading Style Sheets (CSS) • In 1994 as the web was starting to gain popularity, there was no way to style documents • Initial thinking of Tim Berners-Lee was that styling is a browser level concern • Demand from content authors led to the birth of fi rst draft of CSS in 1994 • To ensure browser compliance, so called ACID tests were developed starting from 1998
  • 27. 1995 HyperText Markup Language (HTML) • A simple markup language used to create hypertext documents that are platform independent [Berners-Lee] • In use since 1990 but formalized as a standard in 1995
  • 28. 1995 JavaScript • Developed by Brendan Eich in ten days at Netscape [Eich] • "I am not proud, but I am happy that I chose Scheme-ish fi rst-class functions and Self-ish (albeit singular) prototypes as the main ingredients. The Java in fl uences, especially y2k Date bugs but also the primitive vs. object distinction (e.g., string vs. String), were unfortunate.” [Eich] • Read: JavaScript: The First 20 Years
  • 29. 2012 TypeScript • Microsoft’s TypeScript was a successful attempt to bring typing on top of JavaScript • It came with features such as a class syntax and di ff erent ways to compose types • It performs only a compile-time check and it does not perform runtime checks by design Source: https://www.typescriptlang.org/
  • 30. 2015 ES2015 • ES2015, or ES6, was the fi rst major version of the ECMAScript since 2009 • It included several major features such as class syntax, o ffi cial module syntax, arrow expressions to mention a few • Since ES2015, the standard has been updated on a yearly basis to avoid the addition of so many features at once while keeping the release cycle predictable Source: https://babeljs.io/docs/learn/
  • 31. 2019 Web Assembly • “…a safe, portable, low-level code format designed for e ffi cient execution and compact representation” [WebAssembly] • In other words, it's a good target for higher level code • Depending on the use case, it can be at least as fast or even considerably faster than plain JavaScript while providing strong typing and a light binary format [wasm] Source: https://developer.mozilla.org/en-US/docs/WebAssembly/Understanding_the_text_format
  • 32. Task for later: Look up Flash, Java (applets), and Silverlight and consider what the web might look like if the open web hadn’t won
  • 33. Story of three runtimes Source: https://pixabay.com/photos/macro-cogwheel-gear-engine-vintage-1452987/
  • 34. First JavaScript runtimes • 1996 - SpiderMonkey by Brendan Eich was the fi rst JavaScript runtime and it was developed. It's still in use by Mozilla Firefox • 1997 - Rhino was one of the fi rst major JavaScript engines published open source (Java, still active) • 2008 - V8 by Google is an open source JavaScript engine famous for its high performance • 2009/2020 - Chakra by Microsoft was initially proprietary but became open source in 2020
  • 35. 2009 Jack, Narwhal, and Node.js • Jack was an early port of Rack (Ruby) for the JavaScript JSGI web server interface. The idea was to reach a standard implementation similar to what's available for Ruby, Python (WSGI), or Perl (PSGI) [JSGI] • Narwhal, built on top of Jack, went one step further to "a platform for creating server-side JavaScript web applications and frameworks such as Nitro” • Node.js went its own path and won the race (maybe due to faster innovation and arguably due to leveraging V8)
  • 36. 2009 Node.js • Ryan Dahl developed Node.js on Google's performant V8 runtime to allow development of JavaScript based servers and tools • From early on, Node.js leveraged the CommonJS module de fi nition. Later on this became a problem but it served well in the beginning. • Starting from early versions, Node.js captured the imagination of the community and it took o ff fast as a technology in its fi rst years • These days Node.js is used in a large variety of contexts (web servers, electronics, Finnair planes)
  • 37. 2018 Deno • Deno is Ryan Dahl's (Node.js) new JavaScript runtime • Deno supports both JavaScript and TypeScript • It comes with stronger emphasis on security than Node.js • It supports an url based way to consume modules (npm is also supported) • It's best to consider Deno as an opinionated toolkit as it comes with many necessary tools out of the box • Deno Deploy o ff ers an edge platform built around Deno runtime
  • 38. 2022 Bun • Bun is a high performance JavaScript/TypeScript runtime developed using the Zig low-level language by Jarred Sumner • Since its introduction, it has raised brows across the JavaScript community • In 2022, Bun raised $7m of funding for its development company called Oven • In September 2023, the project reached 1.0
  • 39. Node.js vs. Deno vs. Bun • Node.js is the incumbent solution but does it have a long term future? • Deno is more like a toolkit and it's approaching similar problems from a di ff erent angle with more opinions • Deno’s development seems to have sped up Node.js as well (new features appear faster) • For now, Bun seems like the same thing but faster although as a new solution it comes with relative instability (bugs in APIs, no full compatibility always, new quirks). Deno feels stable in comparison
  • 40. Rise of the SPAs Source: https://pixabay.com/photos/macbook-laptop-ipad-apple-computer-624707/
  • 41. 1999 Asynchronous JavaScript (AJAX) • Before AJAX, any interaction on a page required navigation • After Microsoft implemented XMLHttpRequest in Internet Explorer, performing computation in the background without reloading became possible [Woychowsky] • It was only a few years later that the idea made it to the mainstream as Single Page Applications (SPAs) became trendy. Essentially AJAX enabled SPA style development in additional to key technologies like the History API
  • 42. SPAs Esp. social media platforms Source: https://www.simicart.com/blog/spa-vs-mpa/
  • 43. 2002 Single-page applications (SPAs) • Instead of refreshing pages like in classic Multi-Page Applications (MPAs), SPAs rely on JavaScript and update the view dynamically based on user interaction [Flanagan] • The shift in mindset was enabled by AJAX and new DOM APIs (mainly the History API) • The adoption of the idea led to an explosion of frontend frameworks • SPAs have challenges in the domains of Search Engine Optimization (SEO), accessibility, and performance due to framework requirement and reliance on JavaScript
  • 44. SPAs vs. SSR vs. SSG [Pöyry] Feature SSR (MPA) SPA SSG Pre-rendered HTML ✓ ✓ Updates without refresh ✓ Possible Supports forms ✓ ✓ Through an external service O ffl ine support in modern browsers ✓ Possible
  • 45. 2006 jQuery • Provides abstractions over common operations • Became extremely successful due to simple yet powerful chaining API. Today 78.5% of websites use jQuery (w3techs.com)
  • 46. Progressive enhancement 2008 - Aaron Gustafson - https://alistapart.com/article/understandingprogressiveenhancement/
  • 47. 2010 Angular.js • Miško Hevery developed Angular.js for his startup but as the startup failed, the SPA framework ended up being open sourced • If HTML would have been designed for applications, it could have looked like Angular.js [Sutar] • Angular.js relied on custom directives (HTML attributes) and provided two-way data binding as one of its main selling points • The big innovation was so called digest cycle during which data bindings would be evaluated [Pashec] Source: https://angularjs.org/
  • 48. 2010 Backbone.js • Backbone.js lets you capture data models that exposed events through a data bus from which the views can render on event. At the same time views can trigger changes in the data model. (MV*) [Osmani] • It provided enough abstraction for implementation of SPAs • It's best to think Backbone.js as a light helper for the implementation of applications Source: https://adrianmejia.com/backbone-dot-js-for-absolute-beginners-getting-started/
  • 49. 2010 Knockout.js • Knockout.js implemented MVVM architecture for the web and relied on observable implementation of its own for dependency tracking [Papa]
  • 50. 2013 React.js • Facebook's (Meta) React.js received its inspiration from PHP • React came with JSX, a HTMLish syntax of its own, that let developers write JavaScript within HTML • Unlike solutions before, it implemented idea known as the Virtual DOM (VDOM) • In other words, React maintains structure of its own within memory for change tracking and then it manipulates the real DOM in the background • In addition, React put strong emphasis on the concept of components • React provides a function based API for components in which logic can be implemented using hooks Source: https://react.dev/learn
  • 51. 2014 Vue.js • Vue.js is a AngularJS inspired web framework. Compared to React, it comes with more opinions out of the box and it leverages directives • There's also a lifecycle model that's comparable to earlier versions of React (changed with hooks) Source: https://vuejs.org/guide/introduction.html
  • 52. 2014 Marko • Marko by eBay re-imagines HTML as a language suitable for reactive UIs. It provides a declarative, progressive way to develop • Marko uses a compiler-based approach to generate code that's optimized both for the server and the browser Source: https://markojs.com/
  • 53. Progressive Web Applications 2015 - PWAs are an attempt by Google to bridge the web with native mobile characteristics (persistency, installation) [Lee]
  • 54. 2016 Svelte • Svelte by Rich Harris is a compiler-based approach for developing web sites and applications • Svelte comes with a light syntax of its own and it's reactive by design Source: https://svelte.dev/examples/hello-world
  • 55. 2016 Angular • Angular is Google's successor to earlier Angular.js • To quote documentation, it is "A component-based framework for building scalable web applications” • It's a complete rewrite and it relies heavily on TypeScript and RxJS • Scope-wise Angular is comparable to Vue.js Source: https://angular.io/guide/what-is-angular
  • 56. 2016 Storybook • Storybook is a tool designed for developing style guides and design systems • Storybook started as a solution built on top of webpack for React.js speci fi cally but it has since then branched out to support other bundlers and frameworks • It is particularly useful for component driven development as it helps you to visualize your components and their possible states • It's possible to implement visual regression testing and test automation with Storybook Source: https://storybook.js.org/
  • 57. Full stack JavaScript Source: https://pixabay.com/photos/books-stack-book-store-1163695/
  • 58. 2013 Electron • Electron was an early attempt to allow development of desktop applications using JavaScript • Electron achieved the target by wrapping Chromium, the open source version of Chrome, and by providing desktop speci fi c APIs for fi le access and similar desktop speci fi c tasks • The approach became highly successful and these days many desktop applications use Electron underneath. As an example, VS Code, a popular code editor, is built on top of it. Source: https://www.electronjs.org/docs/latest/
  • 59. 2016 Next.js • Next.js is a full stack React.js framework by Vercel • In other words, it covers all aspects starting from the frontend and spanning to the backend APIs • Next.js integrates well with Vercel's hosting solution and it can be deployed on their edge network for improved performance • Technically Next.js has been built on top of webpack, Babel, swc, and other popular tools so you could consider it as a distribution as well • The scope of Next.js grows each year and these days it includes speci fi c solutions for analytics, e-commerce, and other domains Source: https://nextjs.org/docs/getting-started/installation
  • 60. 2020 Remix • Remix is a full stack framework built for React.js • To quote the site, it's "Focused on web standards and modern web app UX, you’re simply going to build better websites” • The key point about Remix is that it puts heavy emphasis on how to connect data to views • Remix ships with a custom Form component that's progressively enhanced. In other words it works without JavaScript enabled. Source: https://remix.run/
  • 62. JavaScript size trend Source: https://httparchive.org/reports/state-of-javascript?start=2013_04_01&end=latest&view=list
  • 63. 2019 SolidJS • SolidJS is a reactive JavaScript framework • It was inspired by React but it doesn't use VDOM. If React was invented today, it would look something like SolidJS Source: https://www.solidjs.com/
  • 64. 2021 Astro • Astro is a full stack framework built with the islands architecture in mind • Astro does not ship JavaScript by default • Astro uses a custom format that allows you to mix content and JavaScript Source: https://docs.astro.build/en/concepts/islands/
  • 66. 2021 Fresh • Designed to run speci fi cally on Deno edge infrastructure • Zero client-side cost by default • Implements islands architecture • Leverages Preact Source: https://fresh.deno.dev/docs/getting-started/create-a-route
  • 67. 2021 Qwik • Qwik is a new JavaScript framework developed by Hevery et al. • Qwik leverages resumability over hydration and has been optimized to load light (automatic code splitting) • Qwik leverages JSX and adds reactivity on top Source: https://qwik.builder.io/docs/getting-started/
  • 68. Key trends to note • There is a clear shift towards edge computing on the web • The latest generation of frameworks can be considered to be disappearing (so-called disappearing frameworks) • The shift from a content platform to an application platform is still ongoing (friction in APIs) • Consideration: Which technologies/techniques to use and when/where? How much of these choices can be encoded to frameworks?
  • 69. Read my booklet “Disappearing frameworks explained” (arXiv) to learn more
  • 70. Thank you Time for your questions
  • 72. References • [Lincoln] - History of Lincoln Laboratories - https://www.ll.mit.edu/about/history • [Zimmermann] - Internet history timeline: ARPANET to the world wide web - https://www.livescience.com/20727-internet-history.html • [FinInternet] - History of the Finnish internet - https://siy. fi /history-of-the- fi nnish- internet/ • [Berners-Lee] - World-Wide Web: the information universe - Tim Berners-Lee et al. • [cgi-bin] - https://en.wikipedia.org/w/index.php? title=Common_Gateway_Interface&oldid=1102228140
  • 73. References cont. • [Lerdorf] - Programming Php - Rasmus Lerdorf et al. • [Wood] - Document object model (dom) level 1 speci fi cation - Lauren Wood et al. • [Phillips] - Designers: the browser war casualties - Barry Phillips • [MozillaDOM] - https://developer.mozilla.org/en-US/docs/Web/API/ Document_Object_Model/Introduction • [Routley] - https://www.visualcapitalist.com/internet-browser-market-share/ • [Lynx] - https://en.wikipedia.org/wiki/Lynx_(web_browser)
  • 74. References cont. • [Viola] - https://en.wikipedia.org/wiki/ViolaWWW • [Erwise] - https://en.wikipedia.org/wiki/Erwise • [Mosaic] - https://en.wikipedia.org/wiki/Mosaic_(web_browser) • [Sebenius] - Negotiating lessons from the browser wars - James Sebenius • [MozillaHistory] - https://www.mozilla.org/en-US/about/history/ • [Gray] - Google chrome: The making of a cross-platform browser - James Gray • [Eich] - https://brendaneich.com/2008/04/popularity/
  • 75. References cont. • [WebAssembly] - https://www.w3.org/TR/wasm-core-1/ • [wasm] - https://adservio.fr/post/how-fast-and-e ffi cient-is-wasm • [jsgi] - https://en.wikipedia.org/w/index.php?title=JSGI&oldid=1037280622 • [Woychowsky] - AJAX: Creating web pages with asynchronous JavaScript and XML - Edmond Woychowsky et al. • [Flanagan] - JavaScript: The De fi nitive Guide - David Flanagan et al. • [Pöyry] - Next.js ja muut isomor fi set sovelluskehykset - Tuomas Pöyry
  • 76. References cont. • [Sutar] - Angular JS and Its Important Component - Bibhishan Sutar • [Pashec] - https://stackover fl ow.com/q/9682092 • [Lee] - Pride and prejudice in progressive web apps: Abusing native app-like features in web applications - Jiyeon Lee et al. • [Osmani] - Developing Backbone. js Applications: Building Better JavaScript Applications - Addy Osmani • [Papa] - https://docs.microsoft.com/en-us/archive/msdn-magazine/2012/ february/client-insight-getting-started-with-knockout