SlideShare uma empresa Scribd logo
1 de 26
Oscar Renalias
Using Dynamic Languages to
Achieve Higher Development
Productivity and Agility
October 11, 2013

Organizers

Top Media Partner

Media Partner

Supporter
@oscarrenalias

github.com/oscarrenalias
oscar.renalias@accenture.com
oscar@renalias.net
Key characteristics of Dynamic Languages


Dynamic typing



Interpreted



Code conciseness



Support for the interactive REPL (read-evaluate-print loop)
Major Dynamic Language Technologies
Framework

Framework

Framework

Language

Language

Language

Platform

Framework

Platform

Browser
JVM
OS (Unix, Linux, Windows, iOS)
Copyright © 2013 Accenture All rights reserved.

4
Our focus
Framework

Framework

Framework

Language

Language

Language

Platform

Framework

Platform

Browser
JVM
OS (Unix, Linux, Windows, iOS)
Copyright © 2013 Accenture All rights reserved.

5
Ruby
Mature object-oriented language with tons of
libraries and great support for Domain Specific
Languages


Released in 1996



Object-oriented, support for functional programming



Extensive library



Syntax enables great support for internal DSLs



Short learning curve for Java developers



Runs on the JVM as JRuby



Ruby on Rails is the best example of what can be done
with Ruby
PHP
Probably the most widely-used web development
language


Strongly oriented to web applications



Ubiquitous ISP support



Vast library of components



Easy to learn



Very powerful, but not as clean as the other major
dynamic languages



Commercially supported by Zend
Python
Clean, well-designed language that enforces
readable code


Predates Java



Object-oriented with functional programming support



Extensive library



Readable structure promotes maintainable code



Easy to integrate with and wrap C/C++ code



No commercial vendor support



Jython is a fully-compliant Python implementation that
runs on the JVM
JavaScript
Ubiquitous client-side language that has been
recently gaining acceptance as a server-side
language too


Mature language, created for web browsers in 1995



Prototype-based object-oriented language with support for
functional programming



Interest in JavaScript was boosted by Ajax and
frameworks like jQuery



Easy to learn, a bit quirky in some areas



Node.js has accelerated the adoption of JavaScript for
server-side development
Groovy
Ruby-like language for the JVM


Mature dyamic capabilities on the JVM



Integrates seamlessly with Java, effectively leverages all
of Java’s capabilities and ecosystem



Object-oriented, advanced meta-programming and
functional programming features



Promotes code conciseness, comparable to that of Ruby



Strong support for domain-specific languages



Vendor support from VMware
Scala
Powerful functional programming language for the
JVM


Strong following



Hybrid object-oriented and functional programming language



Compiled, runs on the JVM, Steep learning curve



Well-suited for high-productivity development of quality-critical,
complex logic



Excellent support for Domain Specific Languages



Proomotes concurrency through the Actor framework



Vendor support from Typesafe



Akka and Play Framework are built on Scala
Clojure
Strongly opinionated Lisp for the JVM


Lisp compiled for the JVM



Fully functional oriented



Designed to dramatically simplify concurrent programming
and leverage multi-core processor architectures



Philosophy is that of smaller composable libraries as
opposed to monolithic frameworks



Easier than Scala, just as weird for Java developers



No vendor support
Who’s using what?
Ruby

Rails, Chef, Puppet,
Cucumber

GOV.UK, Github, Twitter, Hulu,
ESPN

PHP

Drupal, Wordpress

Flickr, Yahoo, Facebook,
Wikipedia, Digg

Python

Django, Google

Big data projects, Washington
Post

JavaScript

jQuery, Node.js

Virtually every web Application,
LinkedIn, Yammer, Yahoo

Groovy

Grails

Sky.com, wired.com, Canoo.com

Scala

Play, Akka

Twitter, FourSquare, The
Guardian, LinkedIn, Klout

Clojure

Compojure, Cascalog,
Pallet, Riemann

Twitter, Akamai, Prismatic
Why Are Dynamic Languages Important?
Establishing a strong capability in dynamic
languages can position the enterprise for higher
software delivery productivity and agility


Alternative to heavy-weight traditional approaches



Strong support for agility, possibility of dramatically better
productivity and time-to-market



Increased interest in browser-centric and asynchronous web
technologies



Many proven examples in industry



New generation of developers considers them more fun and
exciting



Growing support from industry analysts and thought leaders
Industry Trends
Dynamic languages have an established market
position and are gaining in popularity and
adoption


Ruby, Python, JavaScript, and PHP are consistently
ranked among the top 10 most popular languages by
industry surveys



Recent increase in demand for Ruby, Python, Groovy, and
PHP (Drupal) skills from some of our largest clients



ThoughtWorks’s Oct 2012 Tech Radar moved Scala and
Clojure from “Trial” to “Adopt”
Agility
Dynamic languages are powerful enablers of
agile delivery – methodology is not enough


Cumbersome technology and heavy-weight architecture
do not align well with agile



Extraordinarily rapid code-test workflows is strong enabler
of agile delivery



High-productivity tools and lightweight architectures



In some cases can be twice as fast at half the cost as with
Java or .Net



Synergies with PaaS/SaaS technology for development
and production deployment
Business Application Scenarios
Many kinds of business applications are wellsuited for development with dynamic languages


Media, marketing and e-commerce sites



Application pilots



Location-based, mobile web applications



Web frontend for back-end services



RESTful service APIs



Scientific computing



Big Data



Dev Ops
Fit for Enterprise
Dynamic languages are an important enabler of
software delivery for the enterprise


Organizations and large companies use dynamic languages



High productivity, agile development, fast time-to-market



Reliability



Abundance of libraries



Multi-platform



Mature set of development tools



Strong support ecosystem and commercial vendor support



Performance ranges from acceptable to excellent
Synergy with Other Technologies
Augmenting Java


Significantly faster development of web front-ends



Development of frameworks and complex logic



Continue leveraging existing Java skills and tooling
Synergy with Existing Technologies
Agility for “New Web” applications


Applications involving event-driven and highly responsive
user interfaces



Gartner recommends dynamic language frameworks,
avoid traditional MVC frameworks
Synergy with Existing Technologies
Agility for mobile development


Develop mobile web sites and RESTful APIs



JavaScript & HTML5 write-once-deploy-many, usability
approaching that of native
Synergy with Existing Technologies
Synergy with PaaS technology


Streamlined PaaS support from many of the largest PaaS
providers, further accelerating end-to-end solution delivery
Challenges and Concerns – Performance
Performance and Scalability


Dynamic language performance can’t be ignored, but it is
typically not an issue



Dynamic language applications proven to scale up to very
high transaction volumes
Challenges and Concerns – Skills
Skills and Team Size


Skills availability can be a challenge -- fewer developers
than with Java



Our experience shows Java developers can be rapidly
trained to a moderate level of proficiency



Scaling to very large applications with large teams is
unproven for some dynamic languages
Challenges and Concerns – Adoption
Adoption can be politically difficult due to prior
investments


Corporate IT departments reluctant to introduce additional
languages



Compatibility with existing corporate practices, standards,
and tools can be a challenge



In a Java shop, the introduction of JVM dynamic
languages can be relatively smooth -- existing
investments can be leveraged



Complexity associated with introducing another required
skill may be overrated
Take-away: Why We Should Care About
Dynamic Languages
We care when we need to…


Compress timelines



Be more flexible



Increase creativity



Mitigate risk

Mais conteúdo relacionado

Mais procurados

Top 10 php frameworks in 2021
Top 10 php frameworks in 2021Top 10 php frameworks in 2021
Top 10 php frameworks in 2021MaryamAnwar10
 
IBM IMPACT 2009 Conference Session 2078 - Extending and Integrating Popular P...
IBM IMPACT 2009 Conference Session 2078 - Extending and Integrating Popular P...IBM IMPACT 2009 Conference Session 2078 - Extending and Integrating Popular P...
IBM IMPACT 2009 Conference Session 2078 - Extending and Integrating Popular P...Robert Nicholson
 
Delphi developer certification study guide
Delphi developer certification study guideDelphi developer certification study guide
Delphi developer certification study guideANIL MAHADEV
 
6 weeks 6 months live project summer industrial training in cmc limited 2012
6 weeks  6 months live project summer industrial training in cmc limited  20126 weeks  6 months live project summer industrial training in cmc limited  2012
6 weeks 6 months live project summer industrial training in cmc limited 2012CMC Limited
 
Rcs project Training Bangalore
Rcs project Training BangaloreRcs project Training Bangalore
Rcs project Training BangaloreSunil Kumar
 
DOT NET TRaining
DOT NET TRainingDOT NET TRaining
DOT NET TRainingsunil kumar
 
angular js and node js training in hyderabad
angular js and node js training in hyderabadangular js and node js training in hyderabad
angular js and node js training in hyderabadphp2ranjan
 
PHP Interview Questions
PHP Interview QuestionsPHP Interview Questions
PHP Interview QuestionsMaryamAnwar10
 
Lessons learned from building Eclipse-based add-ons for commercial modeling t...
Lessons learned from building Eclipse-based add-ons for commercial modeling t...Lessons learned from building Eclipse-based add-ons for commercial modeling t...
Lessons learned from building Eclipse-based add-ons for commercial modeling t...IncQuery Labs
 
Introduction to c_sharp
Introduction to c_sharpIntroduction to c_sharp
Introduction to c_sharpJayanta Basak
 
Best things to know about .net framework
Best things to know about .net frameworkBest things to know about .net framework
Best things to know about .net frameworkShelly Megan
 
[Altabel Group] General Presentation 2010
[Altabel Group] General Presentation 2010[Altabel Group] General Presentation 2010
[Altabel Group] General Presentation 2010elviragolyak
 
Overview of Java
Overview of JavaOverview of Java
Overview of Javajosemachoco
 
Java v/s .NET - Which is Better?
Java v/s .NET - Which is Better?Java v/s .NET - Which is Better?
Java v/s .NET - Which is Better?NIIT India
 
Java training in bangalore
Java training in bangaloreJava training in bangalore
Java training in bangalorezasi besant
 

Mais procurados (20)

Top 10 php frameworks in 2021
Top 10 php frameworks in 2021Top 10 php frameworks in 2021
Top 10 php frameworks in 2021
 
IBM IMPACT 2009 Conference Session 2078 - Extending and Integrating Popular P...
IBM IMPACT 2009 Conference Session 2078 - Extending and Integrating Popular P...IBM IMPACT 2009 Conference Session 2078 - Extending and Integrating Popular P...
IBM IMPACT 2009 Conference Session 2078 - Extending and Integrating Popular P...
 
Delphi developer certification study guide
Delphi developer certification study guideDelphi developer certification study guide
Delphi developer certification study guide
 
6 weeks 6 months live project summer industrial training in cmc limited 2012
6 weeks  6 months live project summer industrial training in cmc limited  20126 weeks  6 months live project summer industrial training in cmc limited  2012
6 weeks 6 months live project summer industrial training in cmc limited 2012
 
HTML for beginners
HTML for beginnersHTML for beginners
HTML for beginners
 
Rcs project Training Bangalore
Rcs project Training BangaloreRcs project Training Bangalore
Rcs project Training Bangalore
 
DOT NET TRaining
DOT NET TRainingDOT NET TRaining
DOT NET TRaining
 
angular js and node js training in hyderabad
angular js and node js training in hyderabadangular js and node js training in hyderabad
angular js and node js training in hyderabad
 
PHP Interview Questions
PHP Interview QuestionsPHP Interview Questions
PHP Interview Questions
 
Gowrisankar_Resume
Gowrisankar_ResumeGowrisankar_Resume
Gowrisankar_Resume
 
Delphi Certification
Delphi CertificationDelphi Certification
Delphi Certification
 
.Net language support
.Net language support.Net language support
.Net language support
 
Lessons learned from building Eclipse-based add-ons for commercial modeling t...
Lessons learned from building Eclipse-based add-ons for commercial modeling t...Lessons learned from building Eclipse-based add-ons for commercial modeling t...
Lessons learned from building Eclipse-based add-ons for commercial modeling t...
 
Introduction to c_sharp
Introduction to c_sharpIntroduction to c_sharp
Introduction to c_sharp
 
Best things to know about .net framework
Best things to know about .net frameworkBest things to know about .net framework
Best things to know about .net framework
 
Best PHP Frameworks
Best PHP FrameworksBest PHP Frameworks
Best PHP Frameworks
 
[Altabel Group] General Presentation 2010
[Altabel Group] General Presentation 2010[Altabel Group] General Presentation 2010
[Altabel Group] General Presentation 2010
 
Overview of Java
Overview of JavaOverview of Java
Overview of Java
 
Java v/s .NET - Which is Better?
Java v/s .NET - Which is Better?Java v/s .NET - Which is Better?
Java v/s .NET - Which is Better?
 
Java training in bangalore
Java training in bangaloreJava training in bangalore
Java training in bangalore
 

Destaque

Automotive: Gaining the required edge
Automotive: Gaining the required edgeAutomotive: Gaining the required edge
Automotive: Gaining the required edgePawan Kawan
 
Containerize everything - Wildcardconf 2015
Containerize everything - Wildcardconf 2015Containerize everything - Wildcardconf 2015
Containerize everything - Wildcardconf 2015Oscar Renalias
 
Richard Smeltz Linkedin Presentation Rev A
Richard Smeltz   Linkedin Presentation Rev ARichard Smeltz   Linkedin Presentation Rev A
Richard Smeltz Linkedin Presentation Rev ARichard Smeltz
 
Asynchronous web apps with the Play Framework 2.0
Asynchronous web apps with the Play Framework 2.0Asynchronous web apps with the Play Framework 2.0
Asynchronous web apps with the Play Framework 2.0Oscar Renalias
 
Richard smeltz linkedin presentation
Richard smeltz   linkedin presentationRichard smeltz   linkedin presentation
Richard smeltz linkedin presentationRichard Smeltz
 
Derivative market in nepal
Derivative market in nepalDerivative market in nepal
Derivative market in nepalPawan Kawan
 
Role and function of nepal rastra bank
Role and function of nepal rastra bankRole and function of nepal rastra bank
Role and function of nepal rastra bankPawan Kawan
 

Destaque (8)

Automotive: Gaining the required edge
Automotive: Gaining the required edgeAutomotive: Gaining the required edge
Automotive: Gaining the required edge
 
Containerize everything - Wildcardconf 2015
Containerize everything - Wildcardconf 2015Containerize everything - Wildcardconf 2015
Containerize everything - Wildcardconf 2015
 
Richard Smeltz Linkedin Presentation Rev A
Richard Smeltz   Linkedin Presentation Rev ARichard Smeltz   Linkedin Presentation Rev A
Richard Smeltz Linkedin Presentation Rev A
 
Asynchronous web apps with the Play Framework 2.0
Asynchronous web apps with the Play Framework 2.0Asynchronous web apps with the Play Framework 2.0
Asynchronous web apps with the Play Framework 2.0
 
Globalization
GlobalizationGlobalization
Globalization
 
Richard smeltz linkedin presentation
Richard smeltz   linkedin presentationRichard smeltz   linkedin presentation
Richard smeltz linkedin presentation
 
Derivative market in nepal
Derivative market in nepalDerivative market in nepal
Derivative market in nepal
 
Role and function of nepal rastra bank
Role and function of nepal rastra bankRole and function of nepal rastra bank
Role and function of nepal rastra bank
 

Semelhante a OpenSlava 2013 - Dynamic Languages

Top Backend Development Languages and Frameworks for Modern Web Applications
Top Backend Development Languages and Frameworks for Modern Web ApplicationsTop Backend Development Languages and Frameworks for Modern Web Applications
Top Backend Development Languages and Frameworks for Modern Web ApplicationsKaneJordy1
 
Improve Your Business Standards with Backend Development .pdf
Improve Your Business Standards with Backend Development .pdfImprove Your Business Standards with Backend Development .pdf
Improve Your Business Standards with Backend Development .pdfWPWeb Infotech
 
Top Programming Languages to Learn for Web Development in 2023
Top Programming Languages to Learn for Web Development in 2023Top Programming Languages to Learn for Web Development in 2023
Top Programming Languages to Learn for Web Development in 2023priyanka rajput
 
Top Programming Languages to Learn for Web Development in 2023 (1).pdf
Top Programming Languages to Learn for Web Development in 2023 (1).pdfTop Programming Languages to Learn for Web Development in 2023 (1).pdf
Top Programming Languages to Learn for Web Development in 2023 (1).pdfUncodemy
 
8 Top Web Development Programming Languages in 2023.pdf
8 Top Web Development Programming Languages in 2023.pdf8 Top Web Development Programming Languages in 2023.pdf
8 Top Web Development Programming Languages in 2023.pdfBaek Yongsun
 
The most in-demand programming skills American companies are looking for
The most in-demand programming skills American companies are looking forThe most in-demand programming skills American companies are looking for
The most in-demand programming skills American companies are looking forTuring.com
 
Fullstack JavaScript Developer - E-Degree
Fullstack JavaScript Developer - E-DegreeFullstack JavaScript Developer - E-Degree
Fullstack JavaScript Developer - E-DegreeDineshSingh398
 
Evaluation Ria Frameworks
Evaluation Ria FrameworksEvaluation Ria Frameworks
Evaluation Ria FrameworksRishi Singh
 
Top Web Development Trends in 2023
Top Web Development Trends in 2023Top Web Development Trends in 2023
Top Web Development Trends in 2023UmanoLogic
 
15 Top reasons to choose Java for Backend Development
15 Top reasons to choose Java for Backend Development15 Top reasons to choose Java for Backend Development
15 Top reasons to choose Java for Backend DevelopmentYour Team in India
 
Comparative Study of programming Languages
Comparative Study of programming LanguagesComparative Study of programming Languages
Comparative Study of programming LanguagesIshan Monga
 
Top Automation Programming Languages of 2023.pdf
Top Automation Programming Languages of 2023.pdfTop Automation Programming Languages of 2023.pdf
Top Automation Programming Languages of 2023.pdfpCloudy
 
Java's Journey: Understanding Features and Envisioning Its Future Scope
Java's Journey: Understanding Features and Envisioning Its Future ScopeJava's Journey: Understanding Features and Envisioning Its Future Scope
Java's Journey: Understanding Features and Envisioning Its Future Scopepriyanka rajput
 
Ruby on Rails Vs JavaScript A Comparative Analysis of Technologies for Web De...
Ruby on Rails Vs JavaScript A Comparative Analysis of Technologies for Web De...Ruby on Rails Vs JavaScript A Comparative Analysis of Technologies for Web De...
Ruby on Rails Vs JavaScript A Comparative Analysis of Technologies for Web De...OliviaWatson27
 
Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationstreambase
 
Demo Lecture 01 Notes.pptx by Sabki Kaksha
Demo Lecture 01 Notes.pptx by Sabki KakshaDemo Lecture 01 Notes.pptx by Sabki Kaksha
Demo Lecture 01 Notes.pptx by Sabki KakshaGandhiSarthak
 
Demo Lecture 01 Notes paid , course notes
Demo Lecture 01 Notes paid , course notesDemo Lecture 01 Notes paid , course notes
Demo Lecture 01 Notes paid , course notesGandhiSarthak
 
Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVMelliando dias
 

Semelhante a OpenSlava 2013 - Dynamic Languages (20)

Top Backend Development Languages and Frameworks for Modern Web Applications
Top Backend Development Languages and Frameworks for Modern Web ApplicationsTop Backend Development Languages and Frameworks for Modern Web Applications
Top Backend Development Languages and Frameworks for Modern Web Applications
 
Improve Your Business Standards with Backend Development .pdf
Improve Your Business Standards with Backend Development .pdfImprove Your Business Standards with Backend Development .pdf
Improve Your Business Standards with Backend Development .pdf
 
Top Programming Languages to Learn for Web Development in 2023
Top Programming Languages to Learn for Web Development in 2023Top Programming Languages to Learn for Web Development in 2023
Top Programming Languages to Learn for Web Development in 2023
 
Top Programming Languages to Learn for Web Development in 2023 (1).pdf
Top Programming Languages to Learn for Web Development in 2023 (1).pdfTop Programming Languages to Learn for Web Development in 2023 (1).pdf
Top Programming Languages to Learn for Web Development in 2023 (1).pdf
 
8 Top Web Development Programming Languages in 2023.pdf
8 Top Web Development Programming Languages in 2023.pdf8 Top Web Development Programming Languages in 2023.pdf
8 Top Web Development Programming Languages in 2023.pdf
 
The most in-demand programming skills American companies are looking for
The most in-demand programming skills American companies are looking forThe most in-demand programming skills American companies are looking for
The most in-demand programming skills American companies are looking for
 
Fullstack JavaScript Developer - E-Degree
Fullstack JavaScript Developer - E-DegreeFullstack JavaScript Developer - E-Degree
Fullstack JavaScript Developer - E-Degree
 
Evaluation Ria Frameworks
Evaluation Ria FrameworksEvaluation Ria Frameworks
Evaluation Ria Frameworks
 
Top Web Development Trends in 2023
Top Web Development Trends in 2023Top Web Development Trends in 2023
Top Web Development Trends in 2023
 
4th pdf off page seo.pdf
4th pdf off page seo.pdf4th pdf off page seo.pdf
4th pdf off page seo.pdf
 
Full Stack Development
Full Stack DevelopmentFull Stack Development
Full Stack Development
 
15 Top reasons to choose Java for Backend Development
15 Top reasons to choose Java for Backend Development15 Top reasons to choose Java for Backend Development
15 Top reasons to choose Java for Backend Development
 
Comparative Study of programming Languages
Comparative Study of programming LanguagesComparative Study of programming Languages
Comparative Study of programming Languages
 
Top Automation Programming Languages of 2023.pdf
Top Automation Programming Languages of 2023.pdfTop Automation Programming Languages of 2023.pdf
Top Automation Programming Languages of 2023.pdf
 
Java's Journey: Understanding Features and Envisioning Its Future Scope
Java's Journey: Understanding Features and Envisioning Its Future ScopeJava's Journey: Understanding Features and Envisioning Its Future Scope
Java's Journey: Understanding Features and Envisioning Its Future Scope
 
Ruby on Rails Vs JavaScript A Comparative Analysis of Technologies for Web De...
Ruby on Rails Vs JavaScript A Comparative Analysis of Technologies for Web De...Ruby on Rails Vs JavaScript A Comparative Analysis of Technologies for Web De...
Ruby on Rails Vs JavaScript A Comparative Analysis of Technologies for Web De...
 
Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentation
 
Demo Lecture 01 Notes.pptx by Sabki Kaksha
Demo Lecture 01 Notes.pptx by Sabki KakshaDemo Lecture 01 Notes.pptx by Sabki Kaksha
Demo Lecture 01 Notes.pptx by Sabki Kaksha
 
Demo Lecture 01 Notes paid , course notes
Demo Lecture 01 Notes paid , course notesDemo Lecture 01 Notes paid , course notes
Demo Lecture 01 Notes paid , course notes
 
Dynamic Languages on the JVM
Dynamic Languages on the JVMDynamic Languages on the JVM
Dynamic Languages on the JVM
 

Mais de Oscar Renalias

Enterprise Open Source
Enterprise Open SourceEnterprise Open Source
Enterprise Open SourceOscar Renalias
 
DockerCon EU 2017 - Containers are not just for microservices
DockerCon EU 2017 - Containers are not just for microservicesDockerCon EU 2017 - Containers are not just for microservices
DockerCon EU 2017 - Containers are not just for microservicesOscar Renalias
 
Containers aren’t just for microservices – Containerizing Legacy Workloads
Containers aren’t just for microservices – Containerizing Legacy WorkloadsContainers aren’t just for microservices – Containerizing Legacy Workloads
Containers aren’t just for microservices – Containerizing Legacy WorkloadsOscar Renalias
 
50 production deployments a day, at least
50 production deployments a day, at least50 production deployments a day, at least
50 production deployments a day, at leastOscar Renalias
 
DockerCon 2016 - Structured Container Delivery
DockerCon 2016 - Structured Container DeliveryDockerCon 2016 - Structured Container Delivery
DockerCon 2016 - Structured Container DeliveryOscar Renalias
 
Next-generation JavaScript - OpenSlava 2014
Next-generation JavaScript - OpenSlava 2014Next-generation JavaScript - OpenSlava 2014
Next-generation JavaScript - OpenSlava 2014Oscar Renalias
 
Node.js, for architects - OpenSlava 2013
Node.js, for architects - OpenSlava 2013Node.js, for architects - OpenSlava 2013
Node.js, for architects - OpenSlava 2013Oscar Renalias
 
ScalaCheck Cookbook v1.0
ScalaCheck Cookbook v1.0ScalaCheck Cookbook v1.0
ScalaCheck Cookbook v1.0Oscar Renalias
 
Unlocking value in your (big) data
Unlocking value in your (big) dataUnlocking value in your (big) data
Unlocking value in your (big) dataOscar Renalias
 

Mais de Oscar Renalias (9)

Enterprise Open Source
Enterprise Open SourceEnterprise Open Source
Enterprise Open Source
 
DockerCon EU 2017 - Containers are not just for microservices
DockerCon EU 2017 - Containers are not just for microservicesDockerCon EU 2017 - Containers are not just for microservices
DockerCon EU 2017 - Containers are not just for microservices
 
Containers aren’t just for microservices – Containerizing Legacy Workloads
Containers aren’t just for microservices – Containerizing Legacy WorkloadsContainers aren’t just for microservices – Containerizing Legacy Workloads
Containers aren’t just for microservices – Containerizing Legacy Workloads
 
50 production deployments a day, at least
50 production deployments a day, at least50 production deployments a day, at least
50 production deployments a day, at least
 
DockerCon 2016 - Structured Container Delivery
DockerCon 2016 - Structured Container DeliveryDockerCon 2016 - Structured Container Delivery
DockerCon 2016 - Structured Container Delivery
 
Next-generation JavaScript - OpenSlava 2014
Next-generation JavaScript - OpenSlava 2014Next-generation JavaScript - OpenSlava 2014
Next-generation JavaScript - OpenSlava 2014
 
Node.js, for architects - OpenSlava 2013
Node.js, for architects - OpenSlava 2013Node.js, for architects - OpenSlava 2013
Node.js, for architects - OpenSlava 2013
 
ScalaCheck Cookbook v1.0
ScalaCheck Cookbook v1.0ScalaCheck Cookbook v1.0
ScalaCheck Cookbook v1.0
 
Unlocking value in your (big) data
Unlocking value in your (big) dataUnlocking value in your (big) data
Unlocking value in your (big) data
 

Último

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Último (20)

Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

OpenSlava 2013 - Dynamic Languages

  • 1. Oscar Renalias Using Dynamic Languages to Achieve Higher Development Productivity and Agility October 11, 2013 Organizers Top Media Partner Media Partner Supporter
  • 3. Key characteristics of Dynamic Languages  Dynamic typing  Interpreted  Code conciseness  Support for the interactive REPL (read-evaluate-print loop)
  • 4. Major Dynamic Language Technologies Framework Framework Framework Language Language Language Platform Framework Platform Browser JVM OS (Unix, Linux, Windows, iOS) Copyright © 2013 Accenture All rights reserved. 4
  • 6. Ruby Mature object-oriented language with tons of libraries and great support for Domain Specific Languages  Released in 1996  Object-oriented, support for functional programming  Extensive library  Syntax enables great support for internal DSLs  Short learning curve for Java developers  Runs on the JVM as JRuby  Ruby on Rails is the best example of what can be done with Ruby
  • 7. PHP Probably the most widely-used web development language  Strongly oriented to web applications  Ubiquitous ISP support  Vast library of components  Easy to learn  Very powerful, but not as clean as the other major dynamic languages  Commercially supported by Zend
  • 8. Python Clean, well-designed language that enforces readable code  Predates Java  Object-oriented with functional programming support  Extensive library  Readable structure promotes maintainable code  Easy to integrate with and wrap C/C++ code  No commercial vendor support  Jython is a fully-compliant Python implementation that runs on the JVM
  • 9. JavaScript Ubiquitous client-side language that has been recently gaining acceptance as a server-side language too  Mature language, created for web browsers in 1995  Prototype-based object-oriented language with support for functional programming  Interest in JavaScript was boosted by Ajax and frameworks like jQuery  Easy to learn, a bit quirky in some areas  Node.js has accelerated the adoption of JavaScript for server-side development
  • 10. Groovy Ruby-like language for the JVM  Mature dyamic capabilities on the JVM  Integrates seamlessly with Java, effectively leverages all of Java’s capabilities and ecosystem  Object-oriented, advanced meta-programming and functional programming features  Promotes code conciseness, comparable to that of Ruby  Strong support for domain-specific languages  Vendor support from VMware
  • 11. Scala Powerful functional programming language for the JVM  Strong following  Hybrid object-oriented and functional programming language  Compiled, runs on the JVM, Steep learning curve  Well-suited for high-productivity development of quality-critical, complex logic  Excellent support for Domain Specific Languages  Proomotes concurrency through the Actor framework  Vendor support from Typesafe  Akka and Play Framework are built on Scala
  • 12. Clojure Strongly opinionated Lisp for the JVM  Lisp compiled for the JVM  Fully functional oriented  Designed to dramatically simplify concurrent programming and leverage multi-core processor architectures  Philosophy is that of smaller composable libraries as opposed to monolithic frameworks  Easier than Scala, just as weird for Java developers  No vendor support
  • 13. Who’s using what? Ruby Rails, Chef, Puppet, Cucumber GOV.UK, Github, Twitter, Hulu, ESPN PHP Drupal, Wordpress Flickr, Yahoo, Facebook, Wikipedia, Digg Python Django, Google Big data projects, Washington Post JavaScript jQuery, Node.js Virtually every web Application, LinkedIn, Yammer, Yahoo Groovy Grails Sky.com, wired.com, Canoo.com Scala Play, Akka Twitter, FourSquare, The Guardian, LinkedIn, Klout Clojure Compojure, Cascalog, Pallet, Riemann Twitter, Akamai, Prismatic
  • 14. Why Are Dynamic Languages Important? Establishing a strong capability in dynamic languages can position the enterprise for higher software delivery productivity and agility  Alternative to heavy-weight traditional approaches  Strong support for agility, possibility of dramatically better productivity and time-to-market  Increased interest in browser-centric and asynchronous web technologies  Many proven examples in industry  New generation of developers considers them more fun and exciting  Growing support from industry analysts and thought leaders
  • 15. Industry Trends Dynamic languages have an established market position and are gaining in popularity and adoption  Ruby, Python, JavaScript, and PHP are consistently ranked among the top 10 most popular languages by industry surveys  Recent increase in demand for Ruby, Python, Groovy, and PHP (Drupal) skills from some of our largest clients  ThoughtWorks’s Oct 2012 Tech Radar moved Scala and Clojure from “Trial” to “Adopt”
  • 16. Agility Dynamic languages are powerful enablers of agile delivery – methodology is not enough  Cumbersome technology and heavy-weight architecture do not align well with agile  Extraordinarily rapid code-test workflows is strong enabler of agile delivery  High-productivity tools and lightweight architectures  In some cases can be twice as fast at half the cost as with Java or .Net  Synergies with PaaS/SaaS technology for development and production deployment
  • 17. Business Application Scenarios Many kinds of business applications are wellsuited for development with dynamic languages  Media, marketing and e-commerce sites  Application pilots  Location-based, mobile web applications  Web frontend for back-end services  RESTful service APIs  Scientific computing  Big Data  Dev Ops
  • 18. Fit for Enterprise Dynamic languages are an important enabler of software delivery for the enterprise  Organizations and large companies use dynamic languages  High productivity, agile development, fast time-to-market  Reliability  Abundance of libraries  Multi-platform  Mature set of development tools  Strong support ecosystem and commercial vendor support  Performance ranges from acceptable to excellent
  • 19. Synergy with Other Technologies Augmenting Java  Significantly faster development of web front-ends  Development of frameworks and complex logic  Continue leveraging existing Java skills and tooling
  • 20. Synergy with Existing Technologies Agility for “New Web” applications  Applications involving event-driven and highly responsive user interfaces  Gartner recommends dynamic language frameworks, avoid traditional MVC frameworks
  • 21. Synergy with Existing Technologies Agility for mobile development  Develop mobile web sites and RESTful APIs  JavaScript & HTML5 write-once-deploy-many, usability approaching that of native
  • 22. Synergy with Existing Technologies Synergy with PaaS technology  Streamlined PaaS support from many of the largest PaaS providers, further accelerating end-to-end solution delivery
  • 23. Challenges and Concerns – Performance Performance and Scalability  Dynamic language performance can’t be ignored, but it is typically not an issue  Dynamic language applications proven to scale up to very high transaction volumes
  • 24. Challenges and Concerns – Skills Skills and Team Size  Skills availability can be a challenge -- fewer developers than with Java  Our experience shows Java developers can be rapidly trained to a moderate level of proficiency  Scaling to very large applications with large teams is unproven for some dynamic languages
  • 25. Challenges and Concerns – Adoption Adoption can be politically difficult due to prior investments  Corporate IT departments reluctant to introduce additional languages  Compatibility with existing corporate practices, standards, and tools can be a challenge  In a Java shop, the introduction of JVM dynamic languages can be relatively smooth -- existing investments can be leveraged  Complexity associated with introducing another required skill may be overrated
  • 26. Take-away: Why We Should Care About Dynamic Languages We care when we need to…  Compress timelines  Be more flexible  Increase creativity  Mitigate risk

Notas do Editor

  1. Key characteristics: dynamic typing, interpreted, code conciseness and REPL interactive consoleDynamic language with long history: Lisp and PythonOur focus: Generic Language like Groovy, Ruby, Python, Clojure and JavaScript + PHP for web applicationOur focus also including strong type functional languages and framework like Scala and Play
  2. Dynamiclanguages are not newLisp, Smalltalk have been around for a long timePython has been around longer than Java (pre-1995)
  3. Ourfocus:We distinguish general-purpose dynamic languages from scripting and specialty languages. Our focus:General purpose: Ruby, Groovy, Clojure, JavaScript, PythonWeb application: PHP We also include statically-typed functional languages which support the REPL style and achieve code conciseness through type inference even if it doesn’t 100% fulfill our own definition of a dynamic language:Scala