SlideShare a Scribd company logo
1 of 38
Download to read offline
Faster than rabbits
@BauerVlad, 2014
Questions / Problems
• Why are we so slow?
• How to increase development productivity?
• How to extend the sphere of projects to develop?
• How to develop High-Load web applications?
• How to develop small / medium sized projects fast?
• What can we do with it?
Java principles
1. It should be "simple, object-oriented and familiar"
2. It should be "robust and secure"
3. It should be "architecture-neutral and portable"
4. It should execute with "high performance"
5. It should be "interpreted, threaded, and dynamic”
+ WORA
James Gosling, 1991-1995
What's the catch?
+ Java EE 8JSRs
JEE evolution
spring.io
Spring that you might not know
• Spring Web Services
• Spring Data
• Spring Web Flow
• Spring Integration
• Spring Batch
• Spring Security
• Spring HATEOAS
• Spring Social
• Spring AMQP
• Spring Mobile
• Spring for Android
• Spring Boot
• Spring XD
• Spring LDAP
• Spring Scala
• Spring Roo
• Spring Blazeds Integration
• Spring Loaded
• Spring Shell
• etc.
Java disadvantages
• “Generic” solutions / Tons of code
• High level of complexity in libraries / frameworks
• Poor concurrency model
• Stateful nature
• Mutable nature
• Backward compatibility
• Monolithic applications architecture
• High resource consumption
• Poor code hot swapping
• Static typing
Hussars keep silence!
BeanShell, JudoScript, Fortress, Gosu, JGNAT, BBj, Adobe ColdFusion, Railo,
Open BlueDragon, Armed Bear Common Lisp, CLforJava, Rhino, Nashorn, Free
Pascal, MIDletPascal, Rakudo Perl 6, JIProlog, TuProlog, NetRexx, Bigloo, Kawa,
SISC, Jscheme, Jacl, …
JVM languages
PHP: Hypertext Preprocessor
• Original name: Personal Home Page Tools
• Paradigms: imperative, functional, object-oriented,
procedural, reflective
• Short time to market
• Easy integration
• Flexibility
• Availability of resources
“I don’t know how to stop it, there was never any intent to write a
programming language. I have absolutely no idea how to write a programming
language, I just kept adding the next logical step on the way.”
(Rasmus Lerdorf)
What about High-Load?
• Debian Linux
• nginx
• PHP + XCache
• Apache + mod_php
• memcached
• MySQL
• Custom DB (internal
project)
• node.js for XMPP
• HAProxy
• XFS
• ffmpeg
• Linux
• PHP / HipHop / Hack
• memcached
• MySQL
• Apache Thrift
• Scribe
• MySQL
• Linux
• PHP
• Lucene
• APC PHP Accelerator
• Memcached
• Linux
• Python
• Django
• Apache 2.2
• PostgreSQL
• memcached
• HAProxy
• Slony
• heartbeat
• Microsoft ASP.NET MVC
• SQL Server 2008
• C#
• JQuery
• LINQ to SQL
• WISC
• Windows Server 2008 R2
x64, Ubuntu Server,
CentOS
• MS SQL Server 2008 R2
• IIS 7.0, HAProxy
• Redis
• Lucene.NET
• Bacula
• Nagios (+ n2rrd, drraw)
• DotNetOpenId
• Prettify, MarkdownSharp,
Flot
• Ubuntu Linux 11.04
• Python
• Django
• Amazon: EC2, ELB,
Route53, S3, CloudFront
• Nginx
• gunicorn
• HAProxy
• PostgreSQL: postgis,
pgfouine, pgbouncer
• Redis, Memcached
• Gearman
• Solr
• munin, statsd, pingdom
• Fabric
• XFS
• Amazon AWS
• Nginx
• Python
• Django
• MySQL
• Memcached
• Redis
• Solr
• Hadoop
• Linux (Debian Sarge)
• Perl
• Apache
• MySQL + InnoDB
• Perlbal
• Memcached
• MogileFS
• Gearman
• TheShwartz
• djabberd
• CentOS, Mac OS X
• Apache
• PHP, Scala, Ruby, Java
• Finagle
• MySQL, HBase
• memcached, Redis
• Varnish, nginx
• HAProxy
• kestrel, Gearman
• Thrift
• Kafka
• Hadoop
• ZooKeeper
• Windows & OpenSUSE
• Java
• С/С++
• GWT
• Apache Tomcat
• JBoss 4
• LVS & IPVS
• MS SQL 2005 & 2008
• BerkleyDB
• Apache Lucene
• Solaris (x86, SPARC)
• Java
• Tomcat & Jetty
• Oracle & MySQL
• ORM
• ActiveMQ for JMS
• Lucene
• Spring
A long time ago in a galaxy far, far
away…
Tools
(Chronon)
Server-side solutions
Example: Halloween project
• Description: TELNET
application
• 38 RFC describes
TELNET protocol
• Node.js, modules: net,
cowsay, colors
• 39 lines of code
• Development time: 15-
30m (+ 2-3h to find
content)
BaaS / MBaaS
• Versioning
• User management
• Analytics
• Code generation
• Media streaming
• File management
• Geolocation
• Push notifications
• Integration with social
networks
• etc.
• http://parse.com
• http://backendless.com
• http://cloudbase.io
• http://quickblox.com
• http://appery.io
• http://feedhenry.com
• http://apiomat.com
• http://applicasa.com
• http://kidozend.com
• etc
Web frameworks
Java Web development
Click, OFBiz, Shale, Sling, Struts, Tapestry, Wicket, AppFuse, Eclipse
RAP, FormEngine, Google Web Toolkit, Hamlets, ItsNat, JavaServer
Faces, JBoss Seam, JSF (RichFaces, ICEFaces, PrimeFaces, MyFaces,
Oracle ADF Faces Rich Client, Backbase Enterprise Ajax, IBM Notes,
Sun Java BluePrints, ZK Ajax), JSP, Jspx-bay, JVx, OpenLaszlo,
OpenXava, RIFE, Spark, Spring (MVC, WebFlow), Stripes, ThinWire,
Vaadin, Wavemaker, WebObjects, WebWork, ZK, ztemplate
...
Tomcat, Geronimo, GlassFish, JBoss, Jetty, Jaminid, Enhydra,
Winstone, Underthow, TJWS, Eclipse Virgo, Borland ES, JRun,
LiteWebServer, WebLogic, Orion, Resin, ServletExec,
WebSphere, NetWeaver, tc Server
...
JSF
• JSF 2.2 (2013-05-21) — Introduced new concepts like stateless views, page flow
and the ability to create portable resource contracts.
• JSF 2.1 (2010-11-22) — Maintenance release 2 of JSF 2.0. Only very minor
amount of spec changes.
• JSF 2.0 (2009-07-01) — Major release for ease of use, enhanced functionality,
and performance. Coincides with Java EE 6.
• JSF 1.2 (2006-05-11) — Many improvements to core systems and APIs. Coincides
with Java EE 5. Initial adoption into Java EE.
• JSF 1.1 (2004-05-27) — Bug fix release. No specification changes.
• JSF 1.0 (2004-03-11) — Initial specification released.
Server-side rendering
Components:
PrimeFaces, JBoss RichFaces, ICEfaces, Apache MyFaces, Oracle ADF Faces Rich
Client, Backbase Enterprise Ajax, IBM Notes, Sun Java BluePrints, ZK Ajax
Problems with customization
GWT?
• Using HTML in GWT - poor
• Using CSS in GWT - poor
• Separation of concerns - poor
• Union of problems
• Desktop != Web
• Live examples:
• Simba: GWT -> AngularJS
• 30-50m to build big projects
Client-side rendering
Rendering
Server-Side
• Has expensive (re)deploy
• Needs a lot of hardware
resources
• Uses expensive caching
• Needs additional REST API
• Uses needed data set
• Has framework components
• Can split development team
• Has got less JS code
Client-Side
• Has instant redeploy
• Does not use a lot of server
resources
• Uses cheap caching
• Has out-of-box REST API
• Uses extended data set
• Has framework components
• Can split development team
• Has got a lot of JS code
vs
Client-side
• Demand (Hot Google searches):
• Java: about 230 000 000 results
• JavaScript: about 916 000 000 results
• PHP: about 3 140 000 000 results
Distribution of work
Designer
Frontend Developer
Backend Developer
HTML Coder
10%
10%
40%
40%
Web browsers
Browser Version
IE 11
Firefox 28.0
Chrome 33.0.x
Safari 7.0.3
Opera 20.0
WebKit (Apple)
V8 (Google)
http://html5test.com
Browser Version Points (max: 555)
Chrome 33 505
Opera 20 496
Opera Mobile 16 471
Firefox 28 448
Android 4.4 428
iOS 7 412
Safari 7 397
Internet Explorer
11 376
10 335
9 128
Windows Phone 8.1 372
http://css3test.com
Browser OS Version %
Opera Windows 7 20.0 59%
Chrome OS X 10.9.2 33 57%
Firefox OS X 10.9.2 22 52%
Internet Explorer Windows 7 11 52%
Opera OS X 10.9.2 12.5 48%
(without vendor-specific features)
Languages
(Caffeine)
GUI/Application related
frameworks
AngularJS
The small joys
+ 1001
Testing
(BDD) (Example)
(maven-surefire-plugin)
(Spock, Cucumber)
(JUnit, TestNG)
Tools
> > >
(Apache Maven) (Apache Ant) (Apache Ivy)
(checkstyle)
Questions?

More Related Content

What's hot

SSJS, NoSQL, GAE and AppengineJS
SSJS, NoSQL, GAE and AppengineJSSSJS, NoSQL, GAE and AppengineJS
SSJS, NoSQL, GAE and AppengineJSEugene Lazutkin
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on RailsAvi Kedar
 
Urbanesia - Development History
Urbanesia - Development HistoryUrbanesia - Development History
Urbanesia - Development HistoryBatista Harahap
 
Tech Stack Ideas
Tech Stack IdeasTech Stack Ideas
Tech Stack Ideasnsclark
 
Elasticsearch JVM-MX Meetup April 2016
Elasticsearch JVM-MX Meetup April 2016Elasticsearch JVM-MX Meetup April 2016
Elasticsearch JVM-MX Meetup April 2016Domingo Suarez Torres
 
Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3Wen-Tien Chang
 
Untangling - fall2017 - week 8
Untangling - fall2017 - week 8Untangling - fall2017 - week 8
Untangling - fall2017 - week 8Derek Jacoby
 
Performance and scalability with drupal
Performance and scalability with drupalPerformance and scalability with drupal
Performance and scalability with drupalRonan Berder
 
High Availability Perl DBI + MySQL
High Availability Perl DBI + MySQLHigh Availability Perl DBI + MySQL
High Availability Perl DBI + MySQLSteve Purkis
 
Website optimization with request reduce
Website optimization with request reduceWebsite optimization with request reduce
Website optimization with request reduceMatt Wrock
 
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...Jon Peck
 
Chicago Microservices Integration Talk
Chicago Microservices Integration TalkChicago Microservices Integration Talk
Chicago Microservices Integration TalkChristian Posta
 
GoSF Summerfest - Why Go at Apcera
GoSF Summerfest - Why Go at ApceraGoSF Summerfest - Why Go at Apcera
GoSF Summerfest - Why Go at ApceraDerek Collison
 
Markup languages and warp-speed documentation
Markup languages and warp-speed documentationMarkup languages and warp-speed documentation
Markup languages and warp-speed documentationLois Patterson
 
Real-world Experiences in Scala
Real-world Experiences in ScalaReal-world Experiences in Scala
Real-world Experiences in ScalaAmir Karimi
 
CrossWorlds: Unleash the Power of Domino for Connections Development
CrossWorlds: Unleash the Power of Domino for Connections Development CrossWorlds: Unleash the Power of Domino for Connections Development
CrossWorlds: Unleash the Power of Domino for Connections Development LetsConnect
 
Drupal High Availability High Performance 2012
Drupal High Availability High Performance 2012Drupal High Availability High Performance 2012
Drupal High Availability High Performance 2012Amazee Labs
 

What's hot (20)

SSJS, NoSQL, GAE and AppengineJS
SSJS, NoSQL, GAE and AppengineJSSSJS, NoSQL, GAE and AppengineJS
SSJS, NoSQL, GAE and AppengineJS
 
Web Development using Ruby on Rails
Web Development using Ruby on RailsWeb Development using Ruby on Rails
Web Development using Ruby on Rails
 
Dibi Conference 2012
Dibi Conference 2012Dibi Conference 2012
Dibi Conference 2012
 
Urbanesia - Development History
Urbanesia - Development HistoryUrbanesia - Development History
Urbanesia - Development History
 
Tech Stack Ideas
Tech Stack IdeasTech Stack Ideas
Tech Stack Ideas
 
SGCE 2015 REST APIs
SGCE 2015 REST APIsSGCE 2015 REST APIs
SGCE 2015 REST APIs
 
Elasticsearch JVM-MX Meetup April 2016
Elasticsearch JVM-MX Meetup April 2016Elasticsearch JVM-MX Meetup April 2016
Elasticsearch JVM-MX Meetup April 2016
 
Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3Service-Oriented Design and Implement with Rails3
Service-Oriented Design and Implement with Rails3
 
Untangling - fall2017 - week 8
Untangling - fall2017 - week 8Untangling - fall2017 - week 8
Untangling - fall2017 - week 8
 
Performance and scalability with drupal
Performance and scalability with drupalPerformance and scalability with drupal
Performance and scalability with drupal
 
High Availability Perl DBI + MySQL
High Availability Perl DBI + MySQLHigh Availability Perl DBI + MySQL
High Availability Perl DBI + MySQL
 
Website optimization with request reduce
Website optimization with request reduceWebsite optimization with request reduce
Website optimization with request reduce
 
SOA Latam 2015
SOA Latam 2015SOA Latam 2015
SOA Latam 2015
 
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcam...
 
Chicago Microservices Integration Talk
Chicago Microservices Integration TalkChicago Microservices Integration Talk
Chicago Microservices Integration Talk
 
GoSF Summerfest - Why Go at Apcera
GoSF Summerfest - Why Go at ApceraGoSF Summerfest - Why Go at Apcera
GoSF Summerfest - Why Go at Apcera
 
Markup languages and warp-speed documentation
Markup languages and warp-speed documentationMarkup languages and warp-speed documentation
Markup languages and warp-speed documentation
 
Real-world Experiences in Scala
Real-world Experiences in ScalaReal-world Experiences in Scala
Real-world Experiences in Scala
 
CrossWorlds: Unleash the Power of Domino for Connections Development
CrossWorlds: Unleash the Power of Domino for Connections Development CrossWorlds: Unleash the Power of Domino for Connections Development
CrossWorlds: Unleash the Power of Domino for Connections Development
 
Drupal High Availability High Performance 2012
Drupal High Availability High Performance 2012Drupal High Availability High Performance 2012
Drupal High Availability High Performance 2012
 

Similar to Be faster then rabbits

After the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANAfter the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANJeff Fox
 
Introduction To Web Development & The New Digital Workplace
Introduction To Web Development & The New Digital WorkplaceIntroduction To Web Development & The New Digital Workplace
Introduction To Web Development & The New Digital WorkplaceJen Wei Lee
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferaydaveayan
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experienceAlex Tumanoff
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experienceIgor Anishchenko
 
"Python web development combines the simplicity of the language with powerful...
"Python web development combines the simplicity of the language with powerful..."Python web development combines the simplicity of the language with powerful...
"Python web development combines the simplicity of the language with powerful...softwaretrainer2elys
 
dotNet Miami - May 17th, 2012: Will Tartak: Designing for Mobile Development
dotNet Miami - May 17th, 2012: Will Tartak: Designing for Mobile DevelopmentdotNet Miami - May 17th, 2012: Will Tartak: Designing for Mobile Development
dotNet Miami - May 17th, 2012: Will Tartak: Designing for Mobile DevelopmentdotNet Miami
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoPaul Withers
 
Resume
ResumeResume
ResumeMina k
 
Cloud Native Camel Riding
Cloud Native Camel RidingCloud Native Camel Riding
Cloud Native Camel RidingChristian Posta
 
Michael stack -the state of apache h base
Michael stack -the state of apache h baseMichael stack -the state of apache h base
Michael stack -the state of apache h basehdhappy001
 
Benefits of an Open environment with Wakanda
Benefits of an Open environment with WakandaBenefits of an Open environment with Wakanda
Benefits of an Open environment with WakandaAlexandre Morgaut
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleIT Arena
 
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...Serdar Basegmez
 
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWSCloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWSAWS Vietnam Community
 
Integration in the age of DevOps
Integration in the age of DevOpsIntegration in the age of DevOps
Integration in the age of DevOpsAlbert Wong
 
Full stack development using javascript what and why - ajay chandravadiya
Full stack development using javascript   what and why - ajay chandravadiyaFull stack development using javascript   what and why - ajay chandravadiya
Full stack development using javascript what and why - ajay chandravadiyaajayrcgmail
 

Similar to Be faster then rabbits (20)

After the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANAfter the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEAN
 
Introduction To Web Development & The New Digital Workplace
Introduction To Web Development & The New Digital WorkplaceIntroduction To Web Development & The New Digital Workplace
Introduction To Web Development & The New Digital Workplace
 
01/2009 - Portral development with liferay
01/2009 - Portral development with liferay01/2009 - Portral development with liferay
01/2009 - Portral development with liferay
 
20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 
Node.js
Node.jsNode.js
Node.js
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
 
Overview of PaaS: Java experience
Overview of PaaS: Java experienceOverview of PaaS: Java experience
Overview of PaaS: Java experience
 
"Python web development combines the simplicity of the language with powerful...
"Python web development combines the simplicity of the language with powerful..."Python web development combines the simplicity of the language with powerful...
"Python web development combines the simplicity of the language with powerful...
 
dotNet Miami - May 17th, 2012: Will Tartak: Designing for Mobile Development
dotNet Miami - May 17th, 2012: Will Tartak: Designing for Mobile DevelopmentdotNet Miami - May 17th, 2012: Will Tartak: Designing for Mobile Development
dotNet Miami - May 17th, 2012: Will Tartak: Designing for Mobile Development
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and Domino
 
Resume
ResumeResume
Resume
 
Cloud Native Camel Riding
Cloud Native Camel RidingCloud Native Camel Riding
Cloud Native Camel Riding
 
Michael stack -the state of apache h base
Michael stack -the state of apache h baseMichael stack -the state of apache h base
Michael stack -the state of apache h base
 
Benefits of an Open environment with Wakanda
Benefits of an Open environment with WakandaBenefits of an Open environment with Wakanda
Benefits of an Open environment with Wakanda
 
Meetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech PeopleMeetup. Technologies Intro for Non-Tech People
Meetup. Technologies Intro for Non-Tech People
 
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
IBM Connect 2017: Your Data In the Major Leagues: A Practical Guide to REST S...
 
Stackato v2
Stackato v2Stackato v2
Stackato v2
 
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWSCloudsolutionday 2016: DevOps workflow with Docker on AWS
Cloudsolutionday 2016: DevOps workflow with Docker on AWS
 
Integration in the age of DevOps
Integration in the age of DevOpsIntegration in the age of DevOps
Integration in the age of DevOps
 
Full stack development using javascript what and why - ajay chandravadiya
Full stack development using javascript   what and why - ajay chandravadiyaFull stack development using javascript   what and why - ajay chandravadiya
Full stack development using javascript what and why - ajay chandravadiya
 

Recently uploaded

Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdf
Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdfFlutter the Future of Mobile App Development - 5 Crucial Reasons.pdf
Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdfMind IT Systems
 
User Experience Designer | Kaylee Miller Resume
User Experience Designer | Kaylee Miller ResumeUser Experience Designer | Kaylee Miller Resume
User Experience Designer | Kaylee Miller ResumeKaylee Miller
 
Einstein Copilot Conversational AI for your CRM.pdf
Einstein Copilot Conversational AI for your CRM.pdfEinstein Copilot Conversational AI for your CRM.pdf
Einstein Copilot Conversational AI for your CRM.pdfCloudMetic
 
BusinessGPT - SECURITY AND GOVERNANCE FOR GENERATIVE AI.pptx
BusinessGPT  - SECURITY AND GOVERNANCE  FOR GENERATIVE AI.pptxBusinessGPT  - SECURITY AND GOVERNANCE  FOR GENERATIVE AI.pptx
BusinessGPT - SECURITY AND GOVERNANCE FOR GENERATIVE AI.pptxAGATSoftware
 
VuNet software organisation powerpoint deck
VuNet software organisation powerpoint deckVuNet software organisation powerpoint deck
VuNet software organisation powerpoint deckNaval Singh
 
Splashtop Enterprise Brochure - Remote Computer Access and Remote Support Sof...
Splashtop Enterprise Brochure - Remote Computer Access and Remote Support Sof...Splashtop Enterprise Brochure - Remote Computer Access and Remote Support Sof...
Splashtop Enterprise Brochure - Remote Computer Access and Remote Support Sof...Splashtop Inc
 
Large Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Large Scale Architecture -- The Unreasonable Effectiveness of SimplicityLarge Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Large Scale Architecture -- The Unreasonable Effectiveness of SimplicityRandy Shoup
 
MUT4SLX: Extensions for Mutation Testing of Stateflow Models
MUT4SLX: Extensions for Mutation Testing of Stateflow ModelsMUT4SLX: Extensions for Mutation Testing of Stateflow Models
MUT4SLX: Extensions for Mutation Testing of Stateflow ModelsUniversity of Antwerp
 
03.2024_North America VMUG Optimizing RevOps using the power of ChatGPT in Ma...
03.2024_North America VMUG Optimizing RevOps using the power of ChatGPT in Ma...03.2024_North America VMUG Optimizing RevOps using the power of ChatGPT in Ma...
03.2024_North America VMUG Optimizing RevOps using the power of ChatGPT in Ma...jackiepotts6
 
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...telebusocialmarketin
 
CYBER SECURITY AND CYBER CRIME COMPLETE GUIDE.pLptx
CYBER SECURITY AND CYBER CRIME COMPLETE GUIDE.pLptxCYBER SECURITY AND CYBER CRIME COMPLETE GUIDE.pLptx
CYBER SECURITY AND CYBER CRIME COMPLETE GUIDE.pLptxBarakaMuyengi
 
Enterprise Content Managements Solutions
Enterprise Content Managements SolutionsEnterprise Content Managements Solutions
Enterprise Content Managements SolutionsIQBG inc
 
Technical improvements. Reasons. Methods. Estimations. CJ
Technical improvements.  Reasons. Methods. Estimations. CJTechnical improvements.  Reasons. Methods. Estimations. CJ
Technical improvements. Reasons. Methods. Estimations. CJpolinaucc
 
Unlocking AI: Navigating Open Source vs. Commercial Frontiers
Unlocking AI:Navigating Open Source vs. Commercial FrontiersUnlocking AI:Navigating Open Source vs. Commercial Frontiers
Unlocking AI: Navigating Open Source vs. Commercial FrontiersRaphaël Semeteys
 
If your code could speak, what would it tell you? Let GitHub Copilot Chat hel...
If your code could speak, what would it tell you? Let GitHub Copilot Chat hel...If your code could speak, what would it tell you? Let GitHub Copilot Chat hel...
If your code could speak, what would it tell you? Let GitHub Copilot Chat hel...Maxim Salnikov
 
Boost Efficiency: Sabre API Integration Made Easy
Boost Efficiency: Sabre API Integration Made EasyBoost Efficiency: Sabre API Integration Made Easy
Boost Efficiency: Sabre API Integration Made Easymichealwillson701
 
MinionLabs_Mr. Gokul Srinivas_Young Entrepreneur
MinionLabs_Mr. Gokul Srinivas_Young EntrepreneurMinionLabs_Mr. Gokul Srinivas_Young Entrepreneur
MinionLabs_Mr. Gokul Srinivas_Young EntrepreneurPriyadarshini T
 
openEuler Community Overview - a presentation showing the current scale
openEuler Community Overview - a presentation showing the current scaleopenEuler Community Overview - a presentation showing the current scale
openEuler Community Overview - a presentation showing the current scaleShane Coughlan
 
Leveling Up your Branding and Mastering MERN: Fullstack WebDev
Leveling Up your Branding and Mastering MERN: Fullstack WebDevLeveling Up your Branding and Mastering MERN: Fullstack WebDev
Leveling Up your Branding and Mastering MERN: Fullstack WebDevpmgdscunsri
 

Recently uploaded (20)

Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdf
Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdfFlutter the Future of Mobile App Development - 5 Crucial Reasons.pdf
Flutter the Future of Mobile App Development - 5 Crucial Reasons.pdf
 
User Experience Designer | Kaylee Miller Resume
User Experience Designer | Kaylee Miller ResumeUser Experience Designer | Kaylee Miller Resume
User Experience Designer | Kaylee Miller Resume
 
Einstein Copilot Conversational AI for your CRM.pdf
Einstein Copilot Conversational AI for your CRM.pdfEinstein Copilot Conversational AI for your CRM.pdf
Einstein Copilot Conversational AI for your CRM.pdf
 
BusinessGPT - SECURITY AND GOVERNANCE FOR GENERATIVE AI.pptx
BusinessGPT  - SECURITY AND GOVERNANCE  FOR GENERATIVE AI.pptxBusinessGPT  - SECURITY AND GOVERNANCE  FOR GENERATIVE AI.pptx
BusinessGPT - SECURITY AND GOVERNANCE FOR GENERATIVE AI.pptx
 
VuNet software organisation powerpoint deck
VuNet software organisation powerpoint deckVuNet software organisation powerpoint deck
VuNet software organisation powerpoint deck
 
Splashtop Enterprise Brochure - Remote Computer Access and Remote Support Sof...
Splashtop Enterprise Brochure - Remote Computer Access and Remote Support Sof...Splashtop Enterprise Brochure - Remote Computer Access and Remote Support Sof...
Splashtop Enterprise Brochure - Remote Computer Access and Remote Support Sof...
 
Large Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Large Scale Architecture -- The Unreasonable Effectiveness of SimplicityLarge Scale Architecture -- The Unreasonable Effectiveness of Simplicity
Large Scale Architecture -- The Unreasonable Effectiveness of Simplicity
 
MUT4SLX: Extensions for Mutation Testing of Stateflow Models
MUT4SLX: Extensions for Mutation Testing of Stateflow ModelsMUT4SLX: Extensions for Mutation Testing of Stateflow Models
MUT4SLX: Extensions for Mutation Testing of Stateflow Models
 
03.2024_North America VMUG Optimizing RevOps using the power of ChatGPT in Ma...
03.2024_North America VMUG Optimizing RevOps using the power of ChatGPT in Ma...03.2024_North America VMUG Optimizing RevOps using the power of ChatGPT in Ma...
03.2024_North America VMUG Optimizing RevOps using the power of ChatGPT in Ma...
 
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...
Telebu Social -Whatsapp Business API : Mastering Omnichannel Business Communi...
 
CYBER SECURITY AND CYBER CRIME COMPLETE GUIDE.pLptx
CYBER SECURITY AND CYBER CRIME COMPLETE GUIDE.pLptxCYBER SECURITY AND CYBER CRIME COMPLETE GUIDE.pLptx
CYBER SECURITY AND CYBER CRIME COMPLETE GUIDE.pLptx
 
Enterprise Content Managements Solutions
Enterprise Content Managements SolutionsEnterprise Content Managements Solutions
Enterprise Content Managements Solutions
 
20140812 - OBD2 Solution
20140812 - OBD2 Solution20140812 - OBD2 Solution
20140812 - OBD2 Solution
 
Technical improvements. Reasons. Methods. Estimations. CJ
Technical improvements.  Reasons. Methods. Estimations. CJTechnical improvements.  Reasons. Methods. Estimations. CJ
Technical improvements. Reasons. Methods. Estimations. CJ
 
Unlocking AI: Navigating Open Source vs. Commercial Frontiers
Unlocking AI:Navigating Open Source vs. Commercial FrontiersUnlocking AI:Navigating Open Source vs. Commercial Frontiers
Unlocking AI: Navigating Open Source vs. Commercial Frontiers
 
If your code could speak, what would it tell you? Let GitHub Copilot Chat hel...
If your code could speak, what would it tell you? Let GitHub Copilot Chat hel...If your code could speak, what would it tell you? Let GitHub Copilot Chat hel...
If your code could speak, what would it tell you? Let GitHub Copilot Chat hel...
 
Boost Efficiency: Sabre API Integration Made Easy
Boost Efficiency: Sabre API Integration Made EasyBoost Efficiency: Sabre API Integration Made Easy
Boost Efficiency: Sabre API Integration Made Easy
 
MinionLabs_Mr. Gokul Srinivas_Young Entrepreneur
MinionLabs_Mr. Gokul Srinivas_Young EntrepreneurMinionLabs_Mr. Gokul Srinivas_Young Entrepreneur
MinionLabs_Mr. Gokul Srinivas_Young Entrepreneur
 
openEuler Community Overview - a presentation showing the current scale
openEuler Community Overview - a presentation showing the current scaleopenEuler Community Overview - a presentation showing the current scale
openEuler Community Overview - a presentation showing the current scale
 
Leveling Up your Branding and Mastering MERN: Fullstack WebDev
Leveling Up your Branding and Mastering MERN: Fullstack WebDevLeveling Up your Branding and Mastering MERN: Fullstack WebDev
Leveling Up your Branding and Mastering MERN: Fullstack WebDev
 

Be faster then rabbits

  • 2. Questions / Problems • Why are we so slow? • How to increase development productivity? • How to extend the sphere of projects to develop? • How to develop High-Load web applications? • How to develop small / medium sized projects fast? • What can we do with it?
  • 3. Java principles 1. It should be "simple, object-oriented and familiar" 2. It should be "robust and secure" 3. It should be "architecture-neutral and portable" 4. It should execute with "high performance" 5. It should be "interpreted, threaded, and dynamic” + WORA James Gosling, 1991-1995 What's the catch?
  • 4. + Java EE 8JSRs JEE evolution
  • 6. Spring that you might not know • Spring Web Services • Spring Data • Spring Web Flow • Spring Integration • Spring Batch • Spring Security • Spring HATEOAS • Spring Social • Spring AMQP • Spring Mobile • Spring for Android • Spring Boot • Spring XD • Spring LDAP • Spring Scala • Spring Roo • Spring Blazeds Integration • Spring Loaded • Spring Shell • etc.
  • 7. Java disadvantages • “Generic” solutions / Tons of code • High level of complexity in libraries / frameworks • Poor concurrency model • Stateful nature • Mutable nature • Backward compatibility • Monolithic applications architecture • High resource consumption • Poor code hot swapping • Static typing Hussars keep silence!
  • 8. BeanShell, JudoScript, Fortress, Gosu, JGNAT, BBj, Adobe ColdFusion, Railo, Open BlueDragon, Armed Bear Common Lisp, CLforJava, Rhino, Nashorn, Free Pascal, MIDletPascal, Rakudo Perl 6, JIProlog, TuProlog, NetRexx, Bigloo, Kawa, SISC, Jscheme, Jacl, … JVM languages
  • 9. PHP: Hypertext Preprocessor • Original name: Personal Home Page Tools • Paradigms: imperative, functional, object-oriented, procedural, reflective • Short time to market • Easy integration • Flexibility • Availability of resources “I don’t know how to stop it, there was never any intent to write a programming language. I have absolutely no idea how to write a programming language, I just kept adding the next logical step on the way.” (Rasmus Lerdorf)
  • 11. • Debian Linux • nginx • PHP + XCache • Apache + mod_php • memcached • MySQL • Custom DB (internal project) • node.js for XMPP • HAProxy • XFS • ffmpeg • Linux • PHP / HipHop / Hack • memcached • MySQL • Apache Thrift • Scribe
  • 12. • MySQL • Linux • PHP • Lucene • APC PHP Accelerator • Memcached • Linux • Python • Django • Apache 2.2 • PostgreSQL • memcached • HAProxy • Slony • heartbeat
  • 13. • Microsoft ASP.NET MVC • SQL Server 2008 • C# • JQuery • LINQ to SQL • WISC • Windows Server 2008 R2 x64, Ubuntu Server, CentOS • MS SQL Server 2008 R2 • IIS 7.0, HAProxy • Redis • Lucene.NET • Bacula • Nagios (+ n2rrd, drraw) • DotNetOpenId • Prettify, MarkdownSharp, Flot
  • 14. • Ubuntu Linux 11.04 • Python • Django • Amazon: EC2, ELB, Route53, S3, CloudFront • Nginx • gunicorn • HAProxy • PostgreSQL: postgis, pgfouine, pgbouncer • Redis, Memcached • Gearman • Solr • munin, statsd, pingdom • Fabric • XFS • Amazon AWS • Nginx • Python • Django • MySQL • Memcached • Redis • Solr • Hadoop
  • 15. • Linux (Debian Sarge) • Perl • Apache • MySQL + InnoDB • Perlbal • Memcached • MogileFS • Gearman • TheShwartz • djabberd • CentOS, Mac OS X • Apache • PHP, Scala, Ruby, Java • Finagle • MySQL, HBase • memcached, Redis • Varnish, nginx • HAProxy • kestrel, Gearman • Thrift • Kafka • Hadoop • ZooKeeper
  • 16. • Windows & OpenSUSE • Java • С/С++ • GWT • Apache Tomcat • JBoss 4 • LVS & IPVS • MS SQL 2005 & 2008 • BerkleyDB • Apache Lucene • Solaris (x86, SPARC) • Java • Tomcat & Jetty • Oracle & MySQL • ORM • ActiveMQ for JMS • Lucene • Spring
  • 17. A long time ago in a galaxy far, far away…
  • 20. Example: Halloween project • Description: TELNET application • 38 RFC describes TELNET protocol • Node.js, modules: net, cowsay, colors • 39 lines of code • Development time: 15- 30m (+ 2-3h to find content)
  • 21. BaaS / MBaaS • Versioning • User management • Analytics • Code generation • Media streaming • File management • Geolocation • Push notifications • Integration with social networks • etc. • http://parse.com • http://backendless.com • http://cloudbase.io • http://quickblox.com • http://appery.io • http://feedhenry.com • http://apiomat.com • http://applicasa.com • http://kidozend.com • etc
  • 23. Java Web development Click, OFBiz, Shale, Sling, Struts, Tapestry, Wicket, AppFuse, Eclipse RAP, FormEngine, Google Web Toolkit, Hamlets, ItsNat, JavaServer Faces, JBoss Seam, JSF (RichFaces, ICEFaces, PrimeFaces, MyFaces, Oracle ADF Faces Rich Client, Backbase Enterprise Ajax, IBM Notes, Sun Java BluePrints, ZK Ajax), JSP, Jspx-bay, JVx, OpenLaszlo, OpenXava, RIFE, Spark, Spring (MVC, WebFlow), Stripes, ThinWire, Vaadin, Wavemaker, WebObjects, WebWork, ZK, ztemplate ... Tomcat, Geronimo, GlassFish, JBoss, Jetty, Jaminid, Enhydra, Winstone, Underthow, TJWS, Eclipse Virgo, Borland ES, JRun, LiteWebServer, WebLogic, Orion, Resin, ServletExec, WebSphere, NetWeaver, tc Server ...
  • 24. JSF • JSF 2.2 (2013-05-21) — Introduced new concepts like stateless views, page flow and the ability to create portable resource contracts. • JSF 2.1 (2010-11-22) — Maintenance release 2 of JSF 2.0. Only very minor amount of spec changes. • JSF 2.0 (2009-07-01) — Major release for ease of use, enhanced functionality, and performance. Coincides with Java EE 6. • JSF 1.2 (2006-05-11) — Many improvements to core systems and APIs. Coincides with Java EE 5. Initial adoption into Java EE. • JSF 1.1 (2004-05-27) — Bug fix release. No specification changes. • JSF 1.0 (2004-03-11) — Initial specification released. Server-side rendering Components: PrimeFaces, JBoss RichFaces, ICEfaces, Apache MyFaces, Oracle ADF Faces Rich Client, Backbase Enterprise Ajax, IBM Notes, Sun Java BluePrints, ZK Ajax Problems with customization
  • 25. GWT? • Using HTML in GWT - poor • Using CSS in GWT - poor • Separation of concerns - poor • Union of problems • Desktop != Web • Live examples: • Simba: GWT -> AngularJS • 30-50m to build big projects Client-side rendering
  • 26. Rendering Server-Side • Has expensive (re)deploy • Needs a lot of hardware resources • Uses expensive caching • Needs additional REST API • Uses needed data set • Has framework components • Can split development team • Has got less JS code Client-Side • Has instant redeploy • Does not use a lot of server resources • Uses cheap caching • Has out-of-box REST API • Uses extended data set • Has framework components • Can split development team • Has got a lot of JS code vs
  • 27. Client-side • Demand (Hot Google searches): • Java: about 230 000 000 results • JavaScript: about 916 000 000 results • PHP: about 3 140 000 000 results
  • 28. Distribution of work Designer Frontend Developer Backend Developer HTML Coder 10% 10% 40% 40%
  • 29. Web browsers Browser Version IE 11 Firefox 28.0 Chrome 33.0.x Safari 7.0.3 Opera 20.0 WebKit (Apple) V8 (Google)
  • 30. http://html5test.com Browser Version Points (max: 555) Chrome 33 505 Opera 20 496 Opera Mobile 16 471 Firefox 28 448 Android 4.4 428 iOS 7 412 Safari 7 397 Internet Explorer 11 376 10 335 9 128 Windows Phone 8.1 372
  • 31. http://css3test.com Browser OS Version % Opera Windows 7 20.0 59% Chrome OS X 10.9.2 33 57% Firefox OS X 10.9.2 22 52% Internet Explorer Windows 7 11 52% Opera OS X 10.9.2 12.5 48% (without vendor-specific features)
  • 37. Tools > > > (Apache Maven) (Apache Ant) (Apache Ivy) (checkstyle)