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?
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!
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)
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
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)