SlideShare a Scribd company logo
Clojure Web Dev History
Ikuru K @ Shibuya Java #19
About me:
- Web developer Work at Cybozu Startups, Inc
- Company Clojure Story: https://clojure.org/stories/cstap
- HN: iku000888
- https://github.com/iku000888
- https://twitter.com/iku000888
Clojure web dev history
1. Servlet + Clojure as a library (2007 ~ 2008)
2. Ring (2009)
a. Compojure
3. ‘Frameworks’
Year 2007: Clojure = Java Library
Dec 11, 2007 @ mailing list...
> I was also wondering what the web programming story is for
clojure. Is there a preferred approach?
Rich: Not yet. I hope to provide a simple servlet
implementation that will route requests to Clojure fns, and a
simple HTML macro system like CL-WHO et al. After that I
would be interested in input on how best to provide Clojure as
a web scripting engine like JSP
- https://groups.google.com/forum/#!searchin/clojure/web|sort:date/clojure/YVoxROEaT6M/s9Pu-ZQ2PPgJ
Webjure (Jan 16, 2008)
- Servlet
- Dispatch to clj functions
- Basic HTML templating
- Basic sql/jdbc setup
- Ajax repl(!)
- 〜proof of concept
- https://github.com/tatut/Webjure
- https://groups.google.com/forum/#!msg/clojure/xC8HpZp5kMU/H-Y84DBXS7cJ
Trend: More with Clojure!
Java
Clojure
Clojure
Java(libs)
Break through: Ring (~2009)
- Request/response as clojure map
- Extensible via middleware
- Adapter with existing Java web servers (Jetty
etc)
- Inspired by Rack(Ruby), WSGI(Python)
- Dominant standard for Clojure web dev
- https://groups.google.com/d/msg/clojure/D3yXjLWqjyQ/Qq83HDO43BIJ
Compojure 〜2009
- Started off as a servlet Clojure stack
- Servlet adapter + HTML templating + routing
- Most of the features moved into Ring
- Now a routing Library
- To be replaced with ataraxy
- ‘ant run’ + build.xml
- https://github.com/weavejester/compojure/tree/2e01266bcdcaa2565d189205f392c301b7aeca65
Noir
- 1.0.0 on 2011
- Built on compojure
- Bundles Session, Cookies, Validation etc
- Quick Start = Initially extremely popular
- Lacked extensibility/flexibility
- Deprecated in 2012
Conjure 〜2010
- Aimed to be like Ruby on Rails
- Scaffolding
- Tasks via dedicated lein plugin
- MVC(?)
- Did not cross the chasm
- Lot to learn
- Might as well roll your own
Luminus
- Libraries combined for you
- Battery included
- lein new luminus foo-proj
- Customizable via lein template switch
- Optional cljs setup
- Maintained
- Very popular
Pedestal
- Ring: Middleware, Pedestal: Interceptor
- Backed by Cognitect
- Async support
Duct
- Stuart Sierra’s Component framework applied
to web development
- Component?
- Manage Lifecycle of app components
- DB, web server etc.
- System = reified object, not in code
Arachne
- Aims to be a full stack framework
- Developed by Cognitect Employee
- Currently in alpha, promising
Duct (2)
- Component lib replaced with Integrant
- Evolving into a full stack web framework with
inspirations from Arachne
- More lightweight compared to Arachne
Extra: asked
- @defn podcast https://defn.audio/
- Q: Pedestal?
- A: Features are cool, but never had to use it.
- Q: Arachne?
- A: Data centric approach was good, but
using was tedious, so made integrant + duct
Extra: Macchiato
- Ring on Node.js!
Summary
- , Everywhere
- Ecosystem built by community
- JVM: Arachne vs Duct
- Node.js: Macchiato?
Thanks!
Ad

More Related Content

What's hot (20)

New World of Angular (v2+)
New World of Angular (v2+)New World of Angular (v2+)
New World of Angular (v2+)
Rahat Khanna a.k.a mAppMechanic
 
Node.js with Express
Node.js with ExpressNode.js with Express
Node.js with Express
Gergely Németh
 
React.js and Flux in details
React.js and Flux in detailsReact.js and Flux in details
React.js and Flux in details
Artyom Trityak
 
Server Side Rendering, caching and performance
Server Side Rendering, caching and performanceServer Side Rendering, caching and performance
Server Side Rendering, caching and performance
Ateev Chopra
 
Introduction to node.js aka NodeJS
Introduction to node.js aka NodeJSIntroduction to node.js aka NodeJS
Introduction to node.js aka NodeJS
JITENDRA KUMAR PATEL
 
Node js for beginners
Node js for beginnersNode js for beginners
Node js for beginners
Arjun Sreekumar
 
Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azure
Colin Mackay
 
JavaScript Engine and WebAssembly
JavaScript Engine and WebAssemblyJavaScript Engine and WebAssembly
JavaScript Engine and WebAssembly
Changhwan Yi
 
JS digest. May 2017
JS digest. May 2017JS digest. May 2017
JS digest. May 2017
ElifTech
 
JavaScript as a Server side language (NodeJS): JSConf 2011, Dhaka
JavaScript as a Server side language (NodeJS): JSConf 2011, DhakaJavaScript as a Server side language (NodeJS): JSConf 2011, Dhaka
JavaScript as a Server side language (NodeJS): JSConf 2011, Dhaka
Nurul Ferdous
 
Server Side Apocalypse, JS
Server Side Apocalypse, JSServer Side Apocalypse, JS
Server Side Apocalypse, JS
Md. Sohel Rana
 
Nodejs
NodejsNodejs
Nodejs
Prem Sanil
 
Running JavaScript Efficiently in a Java World
Running JavaScript Efficiently in a Java WorldRunning JavaScript Efficiently in a Java World
Running JavaScript Efficiently in a Java World
irbull
 
Node.js In The Enterprise - A Primer
Node.js In The Enterprise - A PrimerNode.js In The Enterprise - A Primer
Node.js In The Enterprise - A Primer
Naveen S.R
 
3 Things Everyone Knows About Node JS That You Don't
3 Things Everyone Knows About Node JS That You Don't3 Things Everyone Knows About Node JS That You Don't
3 Things Everyone Knows About Node JS That You Don't
F5 Buddy
 
Node js (runtime environment + js library) platform
Node js (runtime environment + js library) platformNode js (runtime environment + js library) platform
Node js (runtime environment + js library) platform
Sreenivas Kappala
 
Node js training (1)
Node js training (1)Node js training (1)
Node js training (1)
Ashish Gupta
 
Node.js for beginner
Node.js for beginnerNode.js for beginner
Node.js for beginner
Sarunyhot Suwannachoti
 
PHP Indonesia - Nodejs Web Development
PHP Indonesia - Nodejs Web DevelopmentPHP Indonesia - Nodejs Web Development
PHP Indonesia - Nodejs Web Development
Irfan Maulana
 
Create a module bundler from scratch
Create a module bundler from scratchCreate a module bundler from scratch
Create a module bundler from scratch
Sing Ming Chen
 
React.js and Flux in details
React.js and Flux in detailsReact.js and Flux in details
React.js and Flux in details
Artyom Trityak
 
Server Side Rendering, caching and performance
Server Side Rendering, caching and performanceServer Side Rendering, caching and performance
Server Side Rendering, caching and performance
Ateev Chopra
 
Introduction to node.js aka NodeJS
Introduction to node.js aka NodeJSIntroduction to node.js aka NodeJS
Introduction to node.js aka NodeJS
JITENDRA KUMAR PATEL
 
Introduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azureIntroduction to node js - From "hello world" to deploying on azure
Introduction to node js - From "hello world" to deploying on azure
Colin Mackay
 
JavaScript Engine and WebAssembly
JavaScript Engine and WebAssemblyJavaScript Engine and WebAssembly
JavaScript Engine and WebAssembly
Changhwan Yi
 
JS digest. May 2017
JS digest. May 2017JS digest. May 2017
JS digest. May 2017
ElifTech
 
JavaScript as a Server side language (NodeJS): JSConf 2011, Dhaka
JavaScript as a Server side language (NodeJS): JSConf 2011, DhakaJavaScript as a Server side language (NodeJS): JSConf 2011, Dhaka
JavaScript as a Server side language (NodeJS): JSConf 2011, Dhaka
Nurul Ferdous
 
Server Side Apocalypse, JS
Server Side Apocalypse, JSServer Side Apocalypse, JS
Server Side Apocalypse, JS
Md. Sohel Rana
 
Running JavaScript Efficiently in a Java World
Running JavaScript Efficiently in a Java WorldRunning JavaScript Efficiently in a Java World
Running JavaScript Efficiently in a Java World
irbull
 
Node.js In The Enterprise - A Primer
Node.js In The Enterprise - A PrimerNode.js In The Enterprise - A Primer
Node.js In The Enterprise - A Primer
Naveen S.R
 
3 Things Everyone Knows About Node JS That You Don't
3 Things Everyone Knows About Node JS That You Don't3 Things Everyone Knows About Node JS That You Don't
3 Things Everyone Knows About Node JS That You Don't
F5 Buddy
 
Node js (runtime environment + js library) platform
Node js (runtime environment + js library) platformNode js (runtime environment + js library) platform
Node js (runtime environment + js library) platform
Sreenivas Kappala
 
Node js training (1)
Node js training (1)Node js training (1)
Node js training (1)
Ashish Gupta
 
PHP Indonesia - Nodejs Web Development
PHP Indonesia - Nodejs Web DevelopmentPHP Indonesia - Nodejs Web Development
PHP Indonesia - Nodejs Web Development
Irfan Maulana
 
Create a module bundler from scratch
Create a module bundler from scratchCreate a module bundler from scratch
Create a module bundler from scratch
Sing Ming Chen
 

Viewers also liked (7)

The best of AltJava is Xtend
The best of AltJava is XtendThe best of AltJava is Xtend
The best of AltJava is Xtend
takezoe
 
MP in Clojure
MP in ClojureMP in Clojure
MP in Clojure
Kent Ohashi
 
AtCoderで始めるテスト駆動開発
AtCoderで始めるテスト駆動開発AtCoderで始めるテスト駆動開発
AtCoderで始めるテスト駆動開発
YujiSoftware
 
Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」
takezoe
 
Non-Functional Programming in Scala
Non-Functional Programming in ScalaNon-Functional Programming in Scala
Non-Functional Programming in Scala
takezoe
 
Javaでマサカリ投げてみた
Javaでマサカリ投げてみたJavaでマサカリ投げてみた
Javaでマサカリ投げてみた
YujiSoftware
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめ
takezoe
 
The best of AltJava is Xtend
The best of AltJava is XtendThe best of AltJava is Xtend
The best of AltJava is Xtend
takezoe
 
AtCoderで始めるテスト駆動開発
AtCoderで始めるテスト駆動開発AtCoderで始めるテスト駆動開発
AtCoderで始めるテスト駆動開発
YujiSoftware
 
Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」
takezoe
 
Non-Functional Programming in Scala
Non-Functional Programming in ScalaNon-Functional Programming in Scala
Non-Functional Programming in Scala
takezoe
 
Javaでマサカリ投げてみた
Javaでマサカリ投げてみたJavaでマサカリ投げてみた
Javaでマサカリ投げてみた
YujiSoftware
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめ
takezoe
 
Ad

Similar to Clojure web dev history (20)

Introduction to Apache Roller
Introduction to Apache RollerIntroduction to Apache Roller
Introduction to Apache Roller
Matt Raible
 
Short-Training asp.net vNext
Short-Training asp.net vNextShort-Training asp.net vNext
Short-Training asp.net vNext
Betclic Everest Group Tech Team
 
Docker Meetup Tokyo #23 - Zenko Open Source Multi-Cloud Data Controller - Lau...
Docker Meetup Tokyo #23 - Zenko Open Source Multi-Cloud Data Controller - Lau...Docker Meetup Tokyo #23 - Zenko Open Source Multi-Cloud Data Controller - Lau...
Docker Meetup Tokyo #23 - Zenko Open Source Multi-Cloud Data Controller - Lau...
Laure Vergeron
 
Xitrum @ Scala Conference in Japan 2013
Xitrum @ Scala Conference in Japan 2013Xitrum @ Scala Conference in Japan 2013
Xitrum @ Scala Conference in Japan 2013
Ngoc Dao
 
JS FAST Prototyping with AngularJS & RequireJS
JS FAST Prototyping with AngularJS & RequireJSJS FAST Prototyping with AngularJS & RequireJS
JS FAST Prototyping with AngularJS & RequireJS
Yuriy Silvestrov
 
Building a dynamic SPA website with Angular
Building a dynamic SPA website with AngularBuilding a dynamic SPA website with Angular
Building a dynamic SPA website with Angular
Filip Bruun Bech-Larsen
 
Xitrum HOWTOs
Xitrum HOWTOsXitrum HOWTOs
Xitrum HOWTOs
Ngoc Dao
 
From Ruby on Rails to RubyMotion - Writing your First iOS App with RubyMotion
From Ruby on Rails to RubyMotion - Writing your First iOS App with RubyMotionFrom Ruby on Rails to RubyMotion - Writing your First iOS App with RubyMotion
From Ruby on Rails to RubyMotion - Writing your First iOS App with RubyMotion
Michael Denomy
 
What's this jQuery? Where it came from, and how it will drive innovation
What's this jQuery? Where it came from, and how it will drive innovationWhat's this jQuery? Where it came from, and how it will drive innovation
What's this jQuery? Where it came from, and how it will drive innovation
Marakana Inc.
 
Angular js workshop
Angular js workshopAngular js workshop
Angular js workshop
Rolands Krumbergs
 
Future of web_apps
Future of web_appsFuture of web_apps
Future of web_apps
Lakshan Perera
 
Open Apereo - Web components workshop
Open Apereo - Web components workshopOpen Apereo - Web components workshop
Open Apereo - Web components workshop
btopro
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present future
lolopetit
 
Knolx session
Knolx sessionKnolx session
Knolx session
Knoldus Inc.
 
Contentful with Netgen Layouts workshop
Contentful with Netgen Layouts workshopContentful with Netgen Layouts workshop
Contentful with Netgen Layouts workshop
Ivo Lukac
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
Mark Roden
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...
Mark Leusink
 
2019-06 - Goto Amsterdam - Microservices
2019-06 - Goto Amsterdam - Microservices2019-06 - Goto Amsterdam - Microservices
2019-06 - Goto Amsterdam - Microservices
Eamonn Boyle
 
Tip from ConnectED 2015: How to Use Those Cool New Frameworks in Mobile Domin...
Tip from ConnectED 2015: How to Use Those Cool New Frameworks in Mobile Domin...Tip from ConnectED 2015: How to Use Those Cool New Frameworks in Mobile Domin...
Tip from ConnectED 2015: How to Use Those Cool New Frameworks in Mobile Domin...
SocialBiz UserGroup
 
Modern Web Framework : Play framework
Modern Web Framework : Play frameworkModern Web Framework : Play framework
Modern Web Framework : Play framework
Suman Adak
 
Introduction to Apache Roller
Introduction to Apache RollerIntroduction to Apache Roller
Introduction to Apache Roller
Matt Raible
 
Docker Meetup Tokyo #23 - Zenko Open Source Multi-Cloud Data Controller - Lau...
Docker Meetup Tokyo #23 - Zenko Open Source Multi-Cloud Data Controller - Lau...Docker Meetup Tokyo #23 - Zenko Open Source Multi-Cloud Data Controller - Lau...
Docker Meetup Tokyo #23 - Zenko Open Source Multi-Cloud Data Controller - Lau...
Laure Vergeron
 
Xitrum @ Scala Conference in Japan 2013
Xitrum @ Scala Conference in Japan 2013Xitrum @ Scala Conference in Japan 2013
Xitrum @ Scala Conference in Japan 2013
Ngoc Dao
 
JS FAST Prototyping with AngularJS & RequireJS
JS FAST Prototyping with AngularJS & RequireJSJS FAST Prototyping with AngularJS & RequireJS
JS FAST Prototyping with AngularJS & RequireJS
Yuriy Silvestrov
 
Building a dynamic SPA website with Angular
Building a dynamic SPA website with AngularBuilding a dynamic SPA website with Angular
Building a dynamic SPA website with Angular
Filip Bruun Bech-Larsen
 
Xitrum HOWTOs
Xitrum HOWTOsXitrum HOWTOs
Xitrum HOWTOs
Ngoc Dao
 
From Ruby on Rails to RubyMotion - Writing your First iOS App with RubyMotion
From Ruby on Rails to RubyMotion - Writing your First iOS App with RubyMotionFrom Ruby on Rails to RubyMotion - Writing your First iOS App with RubyMotion
From Ruby on Rails to RubyMotion - Writing your First iOS App with RubyMotion
Michael Denomy
 
What's this jQuery? Where it came from, and how it will drive innovation
What's this jQuery? Where it came from, and how it will drive innovationWhat's this jQuery? Where it came from, and how it will drive innovation
What's this jQuery? Where it came from, and how it will drive innovation
Marakana Inc.
 
Open Apereo - Web components workshop
Open Apereo - Web components workshopOpen Apereo - Web components workshop
Open Apereo - Web components workshop
btopro
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present future
lolopetit
 
Contentful with Netgen Layouts workshop
Contentful with Netgen Layouts workshopContentful with Netgen Layouts workshop
Contentful with Netgen Layouts workshop
Ivo Lukac
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
Mark Roden
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...
Mark Leusink
 
2019-06 - Goto Amsterdam - Microservices
2019-06 - Goto Amsterdam - Microservices2019-06 - Goto Amsterdam - Microservices
2019-06 - Goto Amsterdam - Microservices
Eamonn Boyle
 
Tip from ConnectED 2015: How to Use Those Cool New Frameworks in Mobile Domin...
Tip from ConnectED 2015: How to Use Those Cool New Frameworks in Mobile Domin...Tip from ConnectED 2015: How to Use Those Cool New Frameworks in Mobile Domin...
Tip from ConnectED 2015: How to Use Those Cool New Frameworks in Mobile Domin...
SocialBiz UserGroup
 
Modern Web Framework : Play framework
Modern Web Framework : Play frameworkModern Web Framework : Play framework
Modern Web Framework : Play framework
Suman Adak
 
Ad

More from Ikuru Kanuma (20)

clj and deps.edn
clj and deps.ednclj and deps.edn
clj and deps.edn
Ikuru Kanuma
 
Kukutei shinkoku with Clojure
Kukutei shinkoku with ClojureKukutei shinkoku with Clojure
Kukutei shinkoku with Clojure
Ikuru Kanuma
 
Locarise,reagent and JavaScript Libraries
Locarise,reagent and JavaScript LibrariesLocarise,reagent and JavaScript Libraries
Locarise,reagent and JavaScript Libraries
Ikuru Kanuma
 
clara-rules
clara-rulesclara-rules
clara-rules
Ikuru Kanuma
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)
Ikuru Kanuma
 
Clojureでガラケーサイトを作る際の細かい話
Clojureでガラケーサイトを作る際の細かい話Clojureでガラケーサイトを作る際の細かい話
Clojureでガラケーサイトを作る際の細かい話
Ikuru Kanuma
 
Web forms made easy (with formative)
Web forms made easy (with formative)Web forms made easy (with formative)
Web forms made easy (with formative)
Ikuru Kanuma
 
サムネイルを作る話
サムネイルを作る話サムネイルを作る話
サムネイルを作る話
Ikuru Kanuma
 
Review June2015 Dec2015
Review June2015 Dec2015Review June2015 Dec2015
Review June2015 Dec2015
Ikuru Kanuma
 
Redmine on amazon ec2
Redmine on amazon ec2Redmine on amazon ec2
Redmine on amazon ec2
Ikuru Kanuma
 
Engineering Ethics (In Japanese)
Engineering Ethics (In Japanese)Engineering Ethics (In Japanese)
Engineering Ethics (In Japanese)
Ikuru Kanuma
 
First Real Pull Request Ever
First Real Pull Request EverFirst Real Pull Request Ever
First Real Pull Request Ever
Ikuru Kanuma
 
Pyunit
PyunitPyunit
Pyunit
Ikuru Kanuma
 
Review june2014 june2015
Review june2014 june2015Review june2014 june2015
Review june2014 june2015
Ikuru Kanuma
 
Elementary vim tricks
Elementary vim tricksElementary vim tricks
Elementary vim tricks
Ikuru Kanuma
 
Processors in a nutshell
Processors in a nutshellProcessors in a nutshell
Processors in a nutshell
Ikuru Kanuma
 
Computer hardware, and network
Computer hardware, and networkComputer hardware, and network
Computer hardware, and network
Ikuru Kanuma
 
Installing Japanese environment(mozc) on Debian 8 + Mate
Installing Japanese environment(mozc) on Debian 8 + Mate Installing Japanese environment(mozc) on Debian 8 + Mate
Installing Japanese environment(mozc) on Debian 8 + Mate
Ikuru Kanuma
 
Git for standalone use
Git for standalone useGit for standalone use
Git for standalone use
Ikuru Kanuma
 
Soap ui introduction
Soap ui introductionSoap ui introduction
Soap ui introduction
Ikuru Kanuma
 
Kukutei shinkoku with Clojure
Kukutei shinkoku with ClojureKukutei shinkoku with Clojure
Kukutei shinkoku with Clojure
Ikuru Kanuma
 
Locarise,reagent and JavaScript Libraries
Locarise,reagent and JavaScript LibrariesLocarise,reagent and JavaScript Libraries
Locarise,reagent and JavaScript Libraries
Ikuru Kanuma
 
Arachne Unweaved (JP)
Arachne Unweaved (JP)Arachne Unweaved (JP)
Arachne Unweaved (JP)
Ikuru Kanuma
 
Clojureでガラケーサイトを作る際の細かい話
Clojureでガラケーサイトを作る際の細かい話Clojureでガラケーサイトを作る際の細かい話
Clojureでガラケーサイトを作る際の細かい話
Ikuru Kanuma
 
Web forms made easy (with formative)
Web forms made easy (with formative)Web forms made easy (with formative)
Web forms made easy (with formative)
Ikuru Kanuma
 
サムネイルを作る話
サムネイルを作る話サムネイルを作る話
サムネイルを作る話
Ikuru Kanuma
 
Review June2015 Dec2015
Review June2015 Dec2015Review June2015 Dec2015
Review June2015 Dec2015
Ikuru Kanuma
 
Redmine on amazon ec2
Redmine on amazon ec2Redmine on amazon ec2
Redmine on amazon ec2
Ikuru Kanuma
 
Engineering Ethics (In Japanese)
Engineering Ethics (In Japanese)Engineering Ethics (In Japanese)
Engineering Ethics (In Japanese)
Ikuru Kanuma
 
First Real Pull Request Ever
First Real Pull Request EverFirst Real Pull Request Ever
First Real Pull Request Ever
Ikuru Kanuma
 
Review june2014 june2015
Review june2014 june2015Review june2014 june2015
Review june2014 june2015
Ikuru Kanuma
 
Elementary vim tricks
Elementary vim tricksElementary vim tricks
Elementary vim tricks
Ikuru Kanuma
 
Processors in a nutshell
Processors in a nutshellProcessors in a nutshell
Processors in a nutshell
Ikuru Kanuma
 
Computer hardware, and network
Computer hardware, and networkComputer hardware, and network
Computer hardware, and network
Ikuru Kanuma
 
Installing Japanese environment(mozc) on Debian 8 + Mate
Installing Japanese environment(mozc) on Debian 8 + Mate Installing Japanese environment(mozc) on Debian 8 + Mate
Installing Japanese environment(mozc) on Debian 8 + Mate
Ikuru Kanuma
 
Git for standalone use
Git for standalone useGit for standalone use
Git for standalone use
Ikuru Kanuma
 
Soap ui introduction
Soap ui introductionSoap ui introduction
Soap ui introduction
Ikuru Kanuma
 

Recently uploaded (20)

Shift Left using Lean for Agile Software Development
Shift Left using Lean for Agile Software DevelopmentShift Left using Lean for Agile Software Development
Shift Left using Lean for Agile Software Development
SathyaShankar6
 
PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025
mu394968
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and CollaborateMeet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Maxim Salnikov
 
Sales Deck SentinelOne Singularity Platform.pptx
Sales Deck SentinelOne Singularity Platform.pptxSales Deck SentinelOne Singularity Platform.pptx
Sales Deck SentinelOne Singularity Platform.pptx
EliandoLawnote
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
Agentic AI Use Cases using GenAI LLM models
Agentic AI Use Cases using GenAI LLM modelsAgentic AI Use Cases using GenAI LLM models
Agentic AI Use Cases using GenAI LLM models
Manish Chopra
 
Adobe Photoshop Lightroom CC 2025 Crack Latest Version
Adobe Photoshop Lightroom CC 2025 Crack Latest VersionAdobe Photoshop Lightroom CC 2025 Crack Latest Version
Adobe Photoshop Lightroom CC 2025 Crack Latest Version
usmanhidray
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 
Shift Left using Lean for Agile Software Development
Shift Left using Lean for Agile Software DevelopmentShift Left using Lean for Agile Software Development
Shift Left using Lean for Agile Software Development
SathyaShankar6
 
PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025PDF Reader Pro Crack Latest Version FREE Download 2025
PDF Reader Pro Crack Latest Version FREE Download 2025
mu394968
 
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& ConsiderationsDesigning AI-Powered APIs on Azure: Best Practices& Considerations
Designing AI-Powered APIs on Azure: Best Practices& Considerations
Dinusha Kumarasiri
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and CollaborateMeet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Meet the Agents: How AI Is Learning to Think, Plan, and Collaborate
Maxim Salnikov
 
Sales Deck SentinelOne Singularity Platform.pptx
Sales Deck SentinelOne Singularity Platform.pptxSales Deck SentinelOne Singularity Platform.pptx
Sales Deck SentinelOne Singularity Platform.pptx
EliandoLawnote
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
Societal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainabilitySocietal challenges of AI: biases, multilinguism and sustainability
Societal challenges of AI: biases, multilinguism and sustainability
Jordi Cabot
 
Agentic AI Use Cases using GenAI LLM models
Agentic AI Use Cases using GenAI LLM modelsAgentic AI Use Cases using GenAI LLM models
Agentic AI Use Cases using GenAI LLM models
Manish Chopra
 
Adobe Photoshop Lightroom CC 2025 Crack Latest Version
Adobe Photoshop Lightroom CC 2025 Crack Latest VersionAdobe Photoshop Lightroom CC 2025 Crack Latest Version
Adobe Photoshop Lightroom CC 2025 Crack Latest Version
usmanhidray
 
Top 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docxTop 10 Client Portal Software Solutions for 2025.docx
Top 10 Client Portal Software Solutions for 2025.docx
Portli
 
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Mastering Fluent Bit: Ultimate Guide to Integrating Telemetry Pipelines with ...
Eric D. Schabell
 
Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025Adobe Master Collection CC Crack Advance Version 2025
Adobe Master Collection CC Crack Advance Version 2025
kashifyounis067
 
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...
Ranjan Baisak
 
Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)Who Watches the Watchmen (SciFiDevCon 2025)
Who Watches the Watchmen (SciFiDevCon 2025)
Allon Mureinik
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
How Valletta helped healthcare SaaS to transform QA and compliance to grow wi...
Egor Kaleynik
 

Clojure web dev history

  • 1. Clojure Web Dev History Ikuru K @ Shibuya Java #19
  • 2. About me: - Web developer Work at Cybozu Startups, Inc - Company Clojure Story: https://clojure.org/stories/cstap - HN: iku000888 - https://github.com/iku000888 - https://twitter.com/iku000888
  • 3. Clojure web dev history 1. Servlet + Clojure as a library (2007 ~ 2008) 2. Ring (2009) a. Compojure 3. ‘Frameworks’
  • 4. Year 2007: Clojure = Java Library
  • 5. Dec 11, 2007 @ mailing list... > I was also wondering what the web programming story is for clojure. Is there a preferred approach? Rich: Not yet. I hope to provide a simple servlet implementation that will route requests to Clojure fns, and a simple HTML macro system like CL-WHO et al. After that I would be interested in input on how best to provide Clojure as a web scripting engine like JSP - https://groups.google.com/forum/#!searchin/clojure/web|sort:date/clojure/YVoxROEaT6M/s9Pu-ZQ2PPgJ
  • 6. Webjure (Jan 16, 2008) - Servlet - Dispatch to clj functions - Basic HTML templating - Basic sql/jdbc setup - Ajax repl(!) - 〜proof of concept - https://github.com/tatut/Webjure - https://groups.google.com/forum/#!msg/clojure/xC8HpZp5kMU/H-Y84DBXS7cJ
  • 7. Trend: More with Clojure! Java Clojure Clojure Java(libs)
  • 8. Break through: Ring (~2009) - Request/response as clojure map - Extensible via middleware - Adapter with existing Java web servers (Jetty etc) - Inspired by Rack(Ruby), WSGI(Python) - Dominant standard for Clojure web dev - https://groups.google.com/d/msg/clojure/D3yXjLWqjyQ/Qq83HDO43BIJ
  • 9. Compojure 〜2009 - Started off as a servlet Clojure stack - Servlet adapter + HTML templating + routing - Most of the features moved into Ring - Now a routing Library - To be replaced with ataraxy - ‘ant run’ + build.xml - https://github.com/weavejester/compojure/tree/2e01266bcdcaa2565d189205f392c301b7aeca65
  • 10. Noir - 1.0.0 on 2011 - Built on compojure - Bundles Session, Cookies, Validation etc - Quick Start = Initially extremely popular - Lacked extensibility/flexibility - Deprecated in 2012
  • 11. Conjure 〜2010 - Aimed to be like Ruby on Rails - Scaffolding - Tasks via dedicated lein plugin - MVC(?) - Did not cross the chasm - Lot to learn - Might as well roll your own
  • 12. Luminus - Libraries combined for you - Battery included - lein new luminus foo-proj - Customizable via lein template switch - Optional cljs setup - Maintained - Very popular
  • 13. Pedestal - Ring: Middleware, Pedestal: Interceptor - Backed by Cognitect - Async support
  • 14. Duct - Stuart Sierra’s Component framework applied to web development - Component? - Manage Lifecycle of app components - DB, web server etc. - System = reified object, not in code
  • 15. Arachne - Aims to be a full stack framework - Developed by Cognitect Employee - Currently in alpha, promising
  • 16. Duct (2) - Component lib replaced with Integrant - Evolving into a full stack web framework with inspirations from Arachne - More lightweight compared to Arachne
  • 17. Extra: asked - @defn podcast https://defn.audio/ - Q: Pedestal? - A: Features are cool, but never had to use it. - Q: Arachne? - A: Data centric approach was good, but using was tedious, so made integrant + duct
  • 18. Extra: Macchiato - Ring on Node.js!
  • 19. Summary - , Everywhere - Ecosystem built by community - JVM: Arachne vs Duct - Node.js: Macchiato?