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

Juho Vepsäläinen
Juho VepsäläinenWeb Developer à 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 sur 76

Recommandé

Quick introduction to Qwik par
Quick introduction to QwikQuick introduction to Qwik
Quick introduction to QwikJuho Vepsäläinen
165 vues42 diapositives
Web application development - The past, the present, the future par
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 vues266 diapositives
fooConf - JavaScript frameworks of tomorrow par
fooConf - JavaScript frameworks of tomorrowfooConf - JavaScript frameworks of tomorrow
fooConf - JavaScript frameworks of tomorrowJuho Vepsäläinen
157 vues61 diapositives
The future is mostly static par
The future is mostly staticThe future is mostly static
The future is mostly staticJuho Vepsäläinen
391 vues70 diapositives
Introduction to microservices par
Introduction to microservicesIntroduction to microservices
Introduction to microservicesAnil Allewar
1.2K vues46 diapositives
Introduction to Microservices Patterns par
Introduction to Microservices PatternsIntroduction to Microservices Patterns
Introduction to Microservices PatternsDimosthenis Botsaris
343 vues35 diapositives

Contenu connexe

Tendances

Containerized Applications Overview par
Containerized Applications OverviewContainerized Applications Overview
Containerized Applications OverviewApoorv Anand
317 vues25 diapositives
Introduction to linux containers par
Introduction to linux containersIntroduction to linux containers
Introduction to linux containersGoogle
1.4K vues15 diapositives
Introducing Exactly Once Semantics in Apache Kafka with Matthias J. Sax par
Introducing Exactly Once Semantics in Apache Kafka with Matthias J. SaxIntroducing Exactly Once Semantics in Apache Kafka with Matthias J. Sax
Introducing Exactly Once Semantics in Apache Kafka with Matthias J. SaxDatabricks
1.7K vues33 diapositives
Monoliths and Microservices par
Monoliths and Microservices Monoliths and Microservices
Monoliths and Microservices Bozhidar Bozhanov
7.4K vues23 diapositives
APIs in a Microservice Architecture par
APIs in a Microservice ArchitectureAPIs in a Microservice Architecture
APIs in a Microservice ArchitectureWSO2
1.3K vues32 diapositives
Microservices par
MicroservicesMicroservices
MicroservicesSmartBear
1.5K vues27 diapositives

Tendances(20)

Containerized Applications Overview par Apoorv Anand
Containerized Applications OverviewContainerized Applications Overview
Containerized Applications Overview
Apoorv Anand317 vues
Introduction to linux containers par Google
Introduction to linux containersIntroduction to linux containers
Introduction to linux containers
Google1.4K vues
Introducing Exactly Once Semantics in Apache Kafka with Matthias J. Sax par Databricks
Introducing Exactly Once Semantics in Apache Kafka with Matthias J. SaxIntroducing Exactly Once Semantics in Apache Kafka with Matthias J. Sax
Introducing Exactly Once Semantics in Apache Kafka with Matthias J. Sax
Databricks1.7K vues
APIs in a Microservice Architecture par WSO2
APIs in a Microservice ArchitectureAPIs in a Microservice Architecture
APIs in a Microservice Architecture
WSO21.3K vues
Microservices par SmartBear
MicroservicesMicroservices
Microservices
SmartBear1.5K vues
Bridge to Cloud: Using Apache Kafka to Migrate to AWS par confluent
Bridge to Cloud: Using Apache Kafka to Migrate to AWSBridge to Cloud: Using Apache Kafka to Migrate to AWS
Bridge to Cloud: Using Apache Kafka to Migrate to AWS
confluent5.4K vues
Microservices Architecture - Bangkok 2018 par Araf Karsh Hamid
Microservices Architecture - Bangkok 2018Microservices Architecture - Bangkok 2018
Microservices Architecture - Bangkok 2018
Araf Karsh Hamid2.4K vues
Chaos engineering & Gameday on AWS par Bilal Aybar
Chaos engineering & Gameday on AWSChaos engineering & Gameday on AWS
Chaos engineering & Gameday on AWS
Bilal Aybar1.4K vues
Microservice Architecture par tyrantbrian
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
tyrantbrian10.2K vues
The Microservices world in. NET Core and. NET framework par Massimo Bonanni
The Microservices world in. NET Core and. NET frameworkThe Microservices world in. NET Core and. NET framework
The Microservices world in. NET Core and. NET framework
Massimo Bonanni2.2K vues
Deploy Application on Kubernetes par Opsta
Deploy Application on KubernetesDeploy Application on Kubernetes
Deploy Application on Kubernetes
Opsta143 vues
Microservices and docker par Alex Ivy
Microservices and dockerMicroservices and docker
Microservices and docker
Alex Ivy831 vues

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

AJAX the Great: The Origin and Development of the Dynamic Web (2007) par
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 vues51 diapositives
Cmsc 100 (web programming in a nutshell) par
Cmsc 100 (web programming in a nutshell)Cmsc 100 (web programming in a nutshell)
Cmsc 100 (web programming in a nutshell)MaeEstherMaguadMaralit
878 vues13 diapositives
Java _ Definition & Facts _ Britannica.pdf par
Java _ Definition & Facts _ Britannica.pdfJava _ Definition & Facts _ Britannica.pdf
Java _ Definition & Facts _ Britannica.pdfRameswarGprec
11 vues7 diapositives
HTML for beginners par
HTML for beginnersHTML for beginners
HTML for beginnersSalahaddin University-Erbil
316 vues71 diapositives
web browser ppt par
web browser pptweb browser ppt
web browser pptShivalika Singh
16.1K vues84 diapositives
Web browser par
Web browserWeb browser
Web browserHardik Kakadiya
61K vues17 diapositives

Similaire à Web application development - The past, the present, the future(20)

AJAX the Great: The Origin and Development of the Dynamic Web (2007) par 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 vues
Java _ Definition & Facts _ Britannica.pdf par RameswarGprec
Java _ Definition & Facts _ Britannica.pdfJava _ Definition & Facts _ Britannica.pdf
Java _ Definition & Facts _ Britannica.pdf
RameswarGprec11 vues
The story of the web par Chob Lab
The story of the webThe story of the web
The story of the web
Chob Lab1.8K vues
Evolution of Cloud Computing par NephoScale
Evolution of Cloud ComputingEvolution of Cloud Computing
Evolution of Cloud Computing
NephoScale18.5K vues
Evolution of web browsers ppt par Jyothi Reddy
Evolution of web browsers pptEvolution of web browsers ppt
Evolution of web browsers ppt
Jyothi Reddy19.5K vues
9781305078444 ppt ch01 par Terry Yoast
9781305078444 ppt ch019781305078444 ppt ch01
9781305078444 ppt ch01
Terry Yoast156 vues
Cloud Native Computing Foundation: How Virtualization and Containers are Chan... par 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 vues
- Describe in one or two paragraphs what is Web (8-10 lines) Your desc.docx par 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 vues

Plus de Juho Vepsäläinen

JavaScript frameworks of tomorrow par
JavaScript frameworks of tomorrowJavaScript frameworks of tomorrow
JavaScript frameworks of tomorrowJuho Vepsäläinen
122 vues58 diapositives
The future is mostly static par
The future is mostly staticThe future is mostly static
The future is mostly staticJuho Vepsäläinen
68 vues84 diapositives
Survive JavaScript - Strategies and Tricks par
Survive JavaScript - Strategies and TricksSurvive JavaScript - Strategies and Tricks
Survive JavaScript - Strategies and TricksJuho Vepsäläinen
5.2K vues96 diapositives
Speccer par
SpeccerSpeccer
SpeccerJuho Vepsäläinen
2.4K vues8 diapositives
bongaus.fi - Spotting Service Powered by Django par
bongaus.fi - Spotting Service Powered by Djangobongaus.fi - Spotting Service Powered by Django
bongaus.fi - Spotting Service Powered by DjangoJuho Vepsäläinen
1.8K vues43 diapositives
Bootstrap vs. Skeleton par
Bootstrap vs. SkeletonBootstrap vs. Skeleton
Bootstrap vs. SkeletonJuho Vepsäläinen
5K vues9 diapositives

Dernier

Techstack Ltd at Slush 2023, Ukrainian delegation par
Techstack Ltd at Slush 2023, Ukrainian delegationTechstack Ltd at Slush 2023, Ukrainian delegation
Techstack Ltd at Slush 2023, Ukrainian delegationViktoriiaOpanasenko
7 vues4 diapositives
FOSSLight Community Day 2023-11-30 par
FOSSLight Community Day 2023-11-30FOSSLight Community Day 2023-11-30
FOSSLight Community Day 2023-11-30Shane Coughlan
8 vues18 diapositives
Using Qt under LGPL-3.0 par
Using Qt under LGPL-3.0Using Qt under LGPL-3.0
Using Qt under LGPL-3.0Burkhard Stubert
14 vues11 diapositives
How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile... par
How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile...How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile...
How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile...Stefan Wolpers
44 vues38 diapositives
How Workforce Management Software Empowers SMEs | TraQSuite par
How Workforce Management Software Empowers SMEs | TraQSuiteHow Workforce Management Software Empowers SMEs | TraQSuite
How Workforce Management Software Empowers SMEs | TraQSuiteTraQSuite
7 vues3 diapositives
Quality Engineer: A Day in the Life par
Quality Engineer: A Day in the LifeQuality Engineer: A Day in the Life
Quality Engineer: A Day in the LifeJohn Valentino
10 vues18 diapositives

Dernier(20)

How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile... par Stefan Wolpers
How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile...How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile...
How To Make Your Plans Suck Less — Maarten Dalmijn at the 57th Hands-on Agile...
Stefan Wolpers44 vues
How Workforce Management Software Empowers SMEs | TraQSuite par TraQSuite
How Workforce Management Software Empowers SMEs | TraQSuiteHow Workforce Management Software Empowers SMEs | TraQSuite
How Workforce Management Software Empowers SMEs | TraQSuite
TraQSuite7 vues
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P... par NimaTorabi2
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P...Unlocking the Power of AI in Product Management - A Comprehensive Guide for P...
Unlocking the Power of AI in Product Management - A Comprehensive Guide for P...
NimaTorabi217 vues
Advanced API Mocking Techniques Using Wiremock par Dimpy Adhikary
Advanced API Mocking Techniques Using WiremockAdvanced API Mocking Techniques Using Wiremock
Advanced API Mocking Techniques Using Wiremock
predicting-m3-devopsconMunich-2023-v2.pptx par Tier1 app
predicting-m3-devopsconMunich-2023-v2.pptxpredicting-m3-devopsconMunich-2023-v2.pptx
predicting-m3-devopsconMunich-2023-v2.pptx
Tier1 app14 vues
Top-5-production-devconMunich-2023-v2.pptx par Tier1 app
Top-5-production-devconMunich-2023-v2.pptxTop-5-production-devconMunich-2023-v2.pptx
Top-5-production-devconMunich-2023-v2.pptx
Tier1 app9 vues
Automated Testing of Microsoft Power BI Reports par RTTS
Automated Testing of Microsoft Power BI ReportsAutomated Testing of Microsoft Power BI Reports
Automated Testing of Microsoft Power BI Reports
RTTS11 vues
How to build dyanmic dashboards and ensure they always work par Wiiisdom
How to build dyanmic dashboards and ensure they always workHow to build dyanmic dashboards and ensure they always work
How to build dyanmic dashboards and ensure they always work
Wiiisdom16 vues

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