Faster than rabbits
@BauerVlad, 2014
Questions / Problems
• Why are we so slow?
• How to increase development productivity?
• How to extend the sphere of proje...
Java principles
1. It should be "simple, object-oriented and familiar"
2. It should be "robust and secure"
3. It should be...
+ 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
•...
Java disadvantages
• “Generic” solutions / Tons of code
• High level of complexity in libraries / frameworks
• Poor concur...
BeanShell, JudoScript, Fortress, Gosu, JGNAT, BBj, Adobe ColdFusion, Railo,
Open BlueDragon, Armed Bear Common Lisp, CLfor...
PHP: Hypertext Preprocessor
• Original name: Personal Home Page Tools
• Paradigms: imperative, functional, object-oriented...
What about High-Load?
• Debian Linux
• nginx
• PHP + XCache
• Apache + mod_php
• memcached
• MySQL
• Custom DB (internal
project)
• node.js for ...
• MySQL
• Linux
• PHP
• Lucene
• APC PHP Accelerator
• Memcached
• Linux
• Python
• Django
• Apache 2.2
• PostgreSQL
• mem...
• Microsoft ASP.NET MVC
• SQL Server 2008
• C#
• JQuery
• LINQ to SQL
• WISC
• Windows Server 2008 R2
x64, Ubuntu Server,
...
• Ubuntu Linux 11.04
• Python
• Django
• Amazon: EC2, ELB,
Route53, S3, CloudFront
• Nginx
• gunicorn
• HAProxy
• PostgreS...
• Linux (Debian Sarge)
• Perl
• Apache
• MySQL + InnoDB
• Perlbal
• Memcached
• MogileFS
• Gearman
• TheShwartz
• djabberd...
• Windows & OpenSUSE
• Java
• С/С++
• GWT
• Apache Tomcat
• JBoss 4
• LVS & IPVS
• MS SQL 2005 & 2008
• BerkleyDB
• Apache...
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,
c...
BaaS / MBaaS
• Versioning
• User management
• Analytics
• Code generation
• Media streaming
• File management
• Geolocatio...
Web frameworks
Java Web development
Click, OFBiz, Shale, Sling, Struts, Tapestry, Wicket, AppFuse, Eclipse
RAP, FormEngine, Google Web To...
JSF
• JSF 2.2 (2013-05-21) — Introduced new concepts like stateless views, page flow
and the ability to create portable re...
GWT?
• Using HTML in GWT - poor
• Using CSS in GWT - poor
• Separation of concerns - poor
• Union of problems
• Desktop !=...
Rendering
Server-Side
• Has expensive (re)deploy
• Needs a lot of hardware
resources
• Uses expensive caching
• Needs addi...
Client-side
• Demand (Hot Google searches):
• Java: about 230 000 000 results
• JavaScript: about 916 000 000 results
• PH...
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
Andro...
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%
Int...
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?
Upcoming SlideShare
Loading in …5
×

Be faster then rabbits

933 views

Published on

Published in: Software, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
933
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
19
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Be faster then rabbits

  1. 1. Faster than rabbits @BauerVlad, 2014
  2. 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. 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. 4. + Java EE 8JSRs JEE evolution
  5. 5. spring.io
  6. 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. 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. 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. 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)
  10. 10. What about High-Load?
  11. 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. 12. • MySQL • Linux • PHP • Lucene • APC PHP Accelerator • Memcached • Linux • Python • Django • Apache 2.2 • PostgreSQL • memcached • HAProxy • Slony • heartbeat
  13. 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. 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. 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. 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. 17. A long time ago in a galaxy far, far away…
  18. 18. Tools (Chronon)
  19. 19. Server-side solutions
  20. 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. 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
  22. 22. Web frameworks
  23. 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. 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. 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. 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. 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. 28. Distribution of work Designer Frontend Developer Backend Developer HTML Coder 10% 10% 40% 40%
  29. 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. 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. 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)
  32. 32. Languages (Caffeine)
  33. 33. GUI/Application related frameworks
  34. 34. AngularJS
  35. 35. The small joys + 1001
  36. 36. Testing (BDD) (Example) (maven-surefire-plugin) (Spock, Cucumber) (JUnit, TestNG)
  37. 37. Tools > > > (Apache Maven) (Apache Ant) (Apache Ivy) (checkstyle)
  38. 38. Questions?

×