SlideShare a Scribd company logo
1 of 81
Download to read offline
The Modern Java Web Developer
Matt Raible ā€¢ http://raibledesigns.com
Photos by Trish McGinity and Art Escobado 2013
Ā© 2013 Raible Designs
Blogger on raibledesigns.com
Founder of AppFuse
Father, Skier, Cyclist
Web Framework Connoisseur
Who is Matt Raible?
Ā© 2013 Raible Designs
How about YOU?
Have you developed a Struts 1
application? Used PHP?
Have you every written CSS from
scratch?
Why do you hate JavaScript?
Whatā€™s your favorite JavaScript
framework?
Ā© 2013 Raible Designs
Topic Inspiration
Inspired by Ben Evanā€™s and Martijn Verburgā€™s The Well-Grounded
Java Developer
Developing with Java 7
Vital techniques
Polyglot programming on the JVM
Crafting the polyglot project
Ā© 2013 Raible Designs
Purpose
Ā© 2013 Raible Designs
The Modern Java Web Developer
JVM
Ā© 2013 Raible Designs
The Modern JVM Web Developer
Starts with Fast Hardware
Uses IntelliJ IDEA
Leverages jQuery, HTML5, and CSS3
Creates High Performance Web Sites
For Mobile Devices, in the Cloud
And cares about Security
Ā© 2013 Raible Designs
Fast Hardware
Ā© 2013 Raible Designs
IntelliJ IDEA
Ā© 2013 Raible Designs
Supports Zen Coding*
div#page>div.logo+ul#navigation>li*5>a
<div id=page>
<div class=logo></div>
<ul id=navigation>
<li><a href=></a></li>
<li><a href=></a></li>
<li><a href=></a></li>
<li><a href=></a></li>
<li><a href=></a></li>
</ul>
</div>
* In recent versions it has been renamed to Emmet
Ā© 2013 Raible Designs
Java 7 and 8
Strings in switch statements
Diamond Syntax
Try with resources
Improved exception handling with multi-catch
NIO.2: Path, Files and Asynchronous I/O
Path path = FileSystems.getDefault().getPath(logs, access.log);
BufferReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8);
Ā© 2013 Raible Designs
Java 7 and 8
Parallel Collections
JSR 310 Date and Time API
Functional Interfaces with default method
Lambda Expressions (a.k.a. Closures)
Nashorn JavaScript Engine
// sort a list by lastName
List<Person> persons = ...;
persons.sort((p1, p2) ->
p1.getLastName().compareTo(p2.getLastName()));
Ā© 2013 Raible Designs
%s/Hibernate/Spring Data
Servlet 3
@WebServlet, @WebFilter, @WebListener
Asynchronous Servlets
WebApplicationInitializer (to eliminate web.xml)
REST and Functional Programming
The Modern JVM Web Developer is aware of...
Ā© 2013 Raible Designs
Reactive Applications
ā€œUsers expect millisecond response times and 100% uptime. Data
needs are expanding into the petabytes.ā€
The Reactive Manifesto
Ā© 2013 Raible Designs
Key Building Blocks
Observable Models
Event Streams
Stateful Clients
Ā© 2013 Raible Designs
Avatar? avatar.java.net
Ā© 2013 Raible Designs
Scala
ā€œScala is like the dragon in Avatar. It will try to kill you, but if you master
it, you can ļ¬‚y great distances with it and have a wonderful time.ā€
-- Venkat Subramaniam
Ā© 2013 Raible Designs
Scala Basics
def starts a method
variables are started with var or val
variables are deļ¬ned with name:type
semicolons are not required
Ā© 2013 Raible Designs
public class Car {
private final int year;
private int miles;
public int getYear() { return year; }
public int getMiles() { return miles; }
public void setMiles(int theMiles) { miles = theMiles; }
public Car(int theYear, int theMiles) {
year = theYear;
miles = theMiles;
}
}
Scala vs. Java
Ā© 2013 Raible Designs
Scala vs. Java
class Car(val year: Int, var miles: Int)
Ā© 2013 Raible Designs
What about Groovy?
Ā© 2013 Raible Designs
Groovy is still hot...
Ā© 2013 Raible Designs
But sliding to Scala
Ā© 2013 Raible Designs
Learning Scala
Scala for the Impatient - Cay Horstmann
Programming in Scala, 2nd Edition - Martin Odersky, Lex Spoon, and
Bill Venners
Functional Programming Principles in Scala
September 16th 2013 (7 weeks long)
Signup at https://www.coursera.org/course/progfun
Ā© 2013 Raible Designs
The Java Language
ā€œJava remains ā€“ in spite of the fragmented programming
language landscape ā€“ a viable, growing language.ā€
http://redmonk.com/sogrady/2012/02/08/language-rankings-2-2012/
Ā© 2013 Raible Designs
and ... itā€™s still the most popular!
Ā© 2013 Raible Designs
The Services Developer
Ā© 2013 Raible Designs
Fast APIs
JAX-RS Dropwizard
Ā© 2013 Raible Designs
Document Your API
Ā© 2013 Raible Designs
Document Your API
Ā© 2013 Raible Designs
But if want to remain a Web Developer...
Ā© 2013 Raible Designs
Modern Principles
Ā© 2013 Raible Designs
Browser Tools
Firebug for FireFox
Chrome Developer Tools
Elements & Console
Settings
PageSpeed Insights
http://www.igvita.com/slides/2012/devtools-tips-and-tricks
Ā© 2013 Raible Designs
jQuery http://trends.builtwith.com/javascript/jQuery
Ā© 2013 Raible Designs
jQuery
JavaScript Distribution in Top 10,000 Sites
http://trends.builtwith.com/javascript
Ā© 2013 Raible Designs
jQuery
jQuery CDN at http://code.jquery.com/
$(document).ready
$(document).on(ā€˜clickā€™, ā€˜#selectorā€™, function() {})
jQuery UI for Dialogs, Sliders, Calendars
$.ajax and $(ā€˜#divā€™).load(url)
Ā© 2013 Raible Designs
JavaScript
The Good Parts
Lambda
Dynamic Objects
Loose Typing
Object Literals
Ā© 2013 Raible Designs
JavaScript Tips
http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/
Ā© 2013 Raible Designs
JavaScript Programming Patterns
The Old-School Way
Singleton
Module Pattern
Revealing Module Pattern
Custom Objects
Lazy Function Deļ¬nition
http://www.klauskomenda.com/code/javascript-programming-patterns/
Ā© 2013 Raible Designs
Revealing Module Pattern
Ā© 2013 Raible Designs
CoffeeScript
Ā© 2013 Raible Designs
AngularJS
A JavaScript MVW Framework
From Google, MIT Licensed
Data-binding, Controllers, Dependency Injection
Localization, Components, Testable
Angular-seed for Scaļ¬€olding
Great Documentation and Community
Ā© 2013 Raible Designs
AngularJS Basics
Ā© 2013 Raible Designs
Simpliļ¬ed by one man: Addy Osmani
Journey Through The JavaScript MVC Jungle
Learning JavaScript Design Patterns
Choosing a JavaScript MVC Framework
Ā© 2013 Raible Designs
Or Just Choose AngularJS
http://bit.ly/UICDZi
Ā© 2013 Raible Designs
My Angular JS Experience
Ā© 2013 Raible Designs
HTML5
http://on.wsj.com/tEGIJL
Ā© 2013 Raible Designs
How do you write HTML5?
<!DOCTYPE html>
<article> <aside> <section>
<header> <footer> <nav>
<audio> <canvas> <video>
<datalist> <details>
https://developer.mozilla.org/en-US/docs/HTML/HTML5
<applet> <center> <font>
<frame> <frameset>
Ā© 2013 Raible Designs
<form>
<input type=text required>
<input type=submit value=Search/>
</form>
<form>
<input type=text autofocus>
<input type=submit value=Search/>
</form>
HTML5 Forms
http://diveintohtml5.info/forms.html
<form>
<input type=text placeholder=Enter your search terms>
<input type=submit value=Search/>
</form>
Ā© 2013 Raible Designs
<form>
<input type=email>
<input type=submit value=Go>
</form>
HTML5 Forms
Ā© 2013 Raible Designs
HTML5 Killer Features
Editable Text
Ā© 2013 Raible Designs
HTML5 Killer Features
Ā© 2013 Raible Designs
CSS3 Secrets
Animated Transitions
Rounded Corners
Drop Shadows
Gradient Colors
Styling based on sibling count
More cursors for better usability http://lea.verou.me/css3-secrets
transform: rotateY(180deg);
border-radius: 8px 8px 0 0;
box-shadow: 2px 2px 4px 4px;
Ā© 2013 Raible Designs
CSS3 Media Queries
/* Smartphones (portrait and landscape) ----------- */
@media only screen and (min-device-width: 320px)
and (max-device-width: 854px) {
body {
padding: 10px;
}
textarea {
width: 90%;
}
}
/* iPad (portrait and landscape) ----------- */
@media only screen and (min-device-width: 768px)
and (max-device-width: 1024px) {
body {
padding-top: 50px;
}
}
Ā© 2013 Raible Designs
Cool HTML5 Demos http://fff.cmiscm.com
Ā© 2013 Raible Designs
Bootstrap
Good-looking websites by default
Layouts, navs, pagination, buttons
Mobile First (aka Responsive Design)
Over a dozen Custom jQuery Plugins
Themes from {wrap}bootstrap (Market) and
Bootswatch (OSS)
Ā© 2013 Raible Designs
LESS the dynamic stylesheet language
Ā© 2013 Raible Designs
High Performance Web Sites
1. Make Fewer HTTP Requests
2. Use a Content Delivery Network
3. Add Expires Headers
4. Gzip Components
5. Put Stylesheets at the Top
6. Put Scripts at the Bottom
7. Avoid CSS Expressions
Ā© 2013 Raible Designs
High Performance Web Sites
8. Make JavaScript and CSS External
9. Reduce DNS Lookups
10. Minify JavaScript
11. Avoid Redirects
12. Remove Duplicates Scripts
13. Conļ¬gure ETags
14. Make Ajax Cacheable
Ā© 2013 Raible Designs
My Page Speed Experience
Biggest Problem is HTTP Requests
Minify and Concatenate
GZipping has biggest score gain
Expires Headers for Browser Caching
Use Apache or Nginx
Image Sprites for CSS
http://spritecow.com is great
Ā© 2013 Raible Designs
Wro4j
Open Source Java project for
optimization of web resources
Provides concatenation and minimization
of JS and CSS
Gzip, YUI Compressor, JsHint, JsHint,
CssLint, LESS, SASS, Coļ¬€eeScript, Dojo
Shrinksafe
Ā© 2013 Raible Designs
Sidenote: WebJars and UrlRewrite Filter
WebJars: client-side web libraries packages in JARs
http://webjars.org
Servlet 3, Play 2, Grails, Dropwizard, Spring MVC, Tapestry and Wicket
UrlRewriteFilter: like Apacheā€™s mod_rewrite
http://tuckey.org/urlrewrite
Clean URLs and just about everything else
Spring MVCā€™s <default-servlet-handler/> is your friend
Ā© 2013 Raible Designs
Techniques
Versioning Static Assets with UrlRewriteFilter
http://raibledesigns.com/rd/entry/versioning_static_assets_with_urlrewriteļ¬lter
Adding web resource ļ¬ngerprinting to AppFuse with wro4j
http://www.operatornew.com/2012/10/adding-web-resource-ļ¬ngerprinting-
to.html
Improving AppFuseā€™s PageSpeed with Apache
http://raibledesigns.com/rd/entry/improving_appfuse_s_pagespeed_with
Ā© 2013 Raible Designs
But what about nginx?
An open-source, high-performance HTTP server and reverse proxy, as
well as an IMAP/POP3 proxy server
Powers Netļ¬‚ix, Wordpress.com, GitHub and Heroku
http://kevinworthington.com/nginx-for-mac-os-x-mountain-lion-in-2-
minutes/
Ā© 2013 Raible Designs
Apache Gzip and Expires Headers
mod_pagespeed - https://developers.google.com/speed/pagespeed/mod
Automatically applies web performance best practices w/o modiļ¬cation
Improving AppFuseā€™s PageSpeed with Apache
Conļ¬gured mod_deļ¬‚ate, mod_expires and turned on KeepAlive
PageSpeed went from 24 to 96!
YSlow went from 90 to 98
Ā© 2013 Raible Designs
<IfModule mod_deflate.c>
Ā  Ā  SetOutputFilter DEFLATE
Ā  Ā  AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css
application/xml application/xhtml+xml application/rss+xml application/javascript
application/x-javascript
Ā  Ā  DeflateCompressionLevel 9
Ā  Ā  BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat '%r %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
</IfModule>
/etc/httpd/conf.d/deflate.conf
Ā© 2013 Raible Designs
<IfModule mod_expires.c>
Ā  Ā  ExpiresActive On
Ā  Ā  <FilesMatch .(jpe?g|png|gif|js|css)$>
Ā  Ā  Ā  Ā  ExpiresDefault access plus 1 week
Ā  Ā  </FilesMatch>
Ā  Ā  ExpiresByType image/jpeg access plus 1 week
Ā  Ā  ExpiresByType image/png access plus 1 week
Ā  Ā  ExpiresByType image/gif access plus 1 week
Ā  Ā  ExpiresByType text/css access plus 1 week
Ā  Ā  ExpiresByType application/javascript access plus 1 week
Ā  Ā  ExpiresByType application/x-javascript access plus 1 week
</IfModule>
/etc/httpd/conf.d/expires.conf
Ā© 2013 Raible Designs
Application Architecture
Server to Client
Performance implications
Twitter
Airbnb
Charm
Ajaxiļ¬ed Body with pjax
https://github.com/defunkt/jquery-pjax
Ā© 2013 Raible Designs
Mobile Devices
If developing a mobile app with web
technologies
Use PhoneGap or Sencha Touch
Otherwise, add a viewport meta tag
<meta name=viewport content=width=device-
width, initial-scale=1.0>
Ā© 2013 Raible Designs
Mobile Devices - CSS3 Media Queries
/* Smartphones (portrait and landscape) -----------
*/
@media only screen and (min-device-width: 320px) and
(max-device-width: 854px) {
/* Smartphone rules */
}
/* iPad (portrait and landscape) ----------- */
@media only screen and (min-device-width: 768px) and
(max-device-width: 1024px) {
/* Tablet rules */
}
Ā© 2013 Raible Designs
Mobile Devices - Hide Address Bar
<script type=text/javascript>
// Hide address bar for smartphones
/Mobile/.test(navigator.userAgent) && !location.hash
&& setTimeout(function () {
if (!pageYOffset) window.scrollTo(0, 1);
}, 1000);
</script>
Ā© 2013 Raible Designs
Mobile Devices - Disable Focus Zoom
(function(doc) {
var addEvent = 'addEventListener',
type = 'gesturestart',
qsa = 'querySelectorAll',
scales = [1, 1],
meta = qsa in doc ? doc[qsa]('meta[name=viewport]') : [];
function fix() {
meta.content = 'width=device-width,minimum-scale=' +
scales[0] + ',maximum-scale=' + scales[1];
doc.removeEventListener(type, fix, true);
}
if ((meta = meta[meta.length - 1]) && addEvent in doc) {
fix();
scales = [.25, 1.6];
doc[addEvent](type, fix, true);
}
}(document));
Ā© 2013 Raible Designs
The Cloud
Ā© 2013 Raible Designs
The Cloud
Supports Ruby, Node.js, Clojure, Java, Python and Scala
Ā© 2013 Raible Designs
The Cloud
Supports Spring, Grails, Scala, Play, Node.js, Ruby/
Rails/Sinatra
Services: MySQL, PostgreSQL, MongoDB, Redis,
RabbitMQ
Ā© 2013 Raible Designs
The Cloud
Ā© 2013 Raible Designs
Apache TomEE
Ā© 2013 Raible Designs
Security Matters
Be aware of SQL and Content Injection
Disable Cross-Site Scripting (XSS)
Donā€™t give too much information in error pages and exceptions
Stop unvalidated redirects and forwards
Always use https if your application has private data
Understand what browsers have to deal with
Ā© 2013 Raible Designs
The Modern JVM Web Developer
Starts with Fast Hardware
Uses IntelliJ IDEA
Leverages jQuery, HTML5, and CSS3
Creates High Performance Web Sites
For Mobile Devices, in the Cloud
And cares about Security
Ā© 2013 Raible Designs
Staying Modern
Read
Attend Conferences
Submit a talk!
Write
Do
Get Paid
Open Source
Ā© 2013 Raible Designs
Contact Me!
http://raibledesigns.com
@mraible
Presentations
http://slideshare.net/mraible
Code
http://github.com/mraible
Questions?

More Related Content

What's hot

Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016Matt Raible
Ā 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015Matt Raible
Ā 
Java Web Application Security - Utah JUG 2011
Java Web Application Security - Utah JUG 2011Java Web Application Security - Utah JUG 2011
Java Web Application Security - Utah JUG 2011Matt Raible
Ā 
Play Framework vs Grails Smackdown - JavaOne 2013
Play Framework vs Grails Smackdown - JavaOne 2013Play Framework vs Grails Smackdown - JavaOne 2013
Play Framework vs Grails Smackdown - JavaOne 2013Matt Raible
Ā 
What's New in Spring 3.1
What's New in Spring 3.1What's New in Spring 3.1
What's New in Spring 3.1Matt Raible
Ā 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015Matt Raible
Ā 
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...Matt Raible
Ā 
Testing Angular 2 Applications - HTML5 Denver 2016
Testing Angular 2 Applications - HTML5 Denver 2016Testing Angular 2 Applications - HTML5 Denver 2016
Testing Angular 2 Applications - HTML5 Denver 2016Matt Raible
Ā 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016Matt Raible
Ā 
The Art of Angular in 2016 - Devoxx UK 2016
The Art of Angular in 2016 - Devoxx UK 2016The Art of Angular in 2016 - Devoxx UK 2016
The Art of Angular in 2016 - Devoxx UK 2016Matt Raible
Ā 
The Art of Angular in 2016 - Devoxx France 2016
The Art of Angular in 2016 - Devoxx France 2016The Art of Angular in 2016 - Devoxx France 2016
The Art of Angular in 2016 - Devoxx France 2016Matt Raible
Ā 
The Art of Angular in 2016 - vJUG24
The Art of Angular in 2016 - vJUG24The Art of Angular in 2016 - vJUG24
The Art of Angular in 2016 - vJUG24Matt Raible
Ā 
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019Matt Raible
Ā 
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019Matt Raible
Ā 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016Matt Raible
Ā 
Choosing a Java Web Framework
Choosing a Java Web FrameworkChoosing a Java Web Framework
Choosing a Java Web FrameworkWill Iverson
Ā 
Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019Matt Raible
Ā 
VisionX Prototyping.
VisionX Prototyping.VisionX Prototyping.
VisionX Prototyping.SIB Visions GmbH
Ā 
Wrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsWrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsRyan Roemer
Ā 
Angular vs React Smackdown - Devoxx BE 2017
Angular vs React Smackdown - Devoxx BE 2017Angular vs React Smackdown - Devoxx BE 2017
Angular vs React Smackdown - Devoxx BE 2017Matt Raible
Ā 

What's hot (20)

Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx France 2016
Ā 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015
Ā 
Java Web Application Security - Utah JUG 2011
Java Web Application Security - Utah JUG 2011Java Web Application Security - Utah JUG 2011
Java Web Application Security - Utah JUG 2011
Ā 
Play Framework vs Grails Smackdown - JavaOne 2013
Play Framework vs Grails Smackdown - JavaOne 2013Play Framework vs Grails Smackdown - JavaOne 2013
Play Framework vs Grails Smackdown - JavaOne 2013
Ā 
What's New in Spring 3.1
What's New in Spring 3.1What's New in Spring 3.1
What's New in Spring 3.1
Ā 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015
Ā 
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Ā 
Testing Angular 2 Applications - HTML5 Denver 2016
Testing Angular 2 Applications - HTML5 Denver 2016Testing Angular 2 Applications - HTML5 Denver 2016
Testing Angular 2 Applications - HTML5 Denver 2016
Ā 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx UK 2016
Ā 
The Art of Angular in 2016 - Devoxx UK 2016
The Art of Angular in 2016 - Devoxx UK 2016The Art of Angular in 2016 - Devoxx UK 2016
The Art of Angular in 2016 - Devoxx UK 2016
Ā 
The Art of Angular in 2016 - Devoxx France 2016
The Art of Angular in 2016 - Devoxx France 2016The Art of Angular in 2016 - Devoxx France 2016
The Art of Angular in 2016 - Devoxx France 2016
Ā 
The Art of Angular in 2016 - vJUG24
The Art of Angular in 2016 - vJUG24The Art of Angular in 2016 - vJUG24
The Art of Angular in 2016 - vJUG24
Ā 
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
A Gentle Introduction to Angular Schematics - Devoxx Belgium 2019
Ā 
A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019
Ā 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016
Ā 
Choosing a Java Web Framework
Choosing a Java Web FrameworkChoosing a Java Web Framework
Choosing a Java Web Framework
Ā 
Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019Front End Development for Backend Developers - GIDS 2019
Front End Development for Backend Developers - GIDS 2019
Ā 
VisionX Prototyping.
VisionX Prototyping.VisionX Prototyping.
VisionX Prototyping.
Ā 
Wrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web ApplicationsWrangling Large Scale Frontend Web Applications
Wrangling Large Scale Frontend Web Applications
Ā 
Angular vs React Smackdown - Devoxx BE 2017
Angular vs React Smackdown - Devoxx BE 2017Angular vs React Smackdown - Devoxx BE 2017
Angular vs React Smackdown - Devoxx BE 2017
Ā 

Viewers also liked

The Modern Java Web Developer Bootcamp - Devoxx 2013
The Modern Java Web Developer Bootcamp - Devoxx 2013The Modern Java Web Developer Bootcamp - Devoxx 2013
The Modern Java Web Developer Bootcamp - Devoxx 2013Matt Raible
Ā 
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...Matt Raible
Ā 
Developing, Testing and Scaling with Apache Camel - UberConf 2015
Developing, Testing and Scaling with Apache Camel - UberConf 2015Developing, Testing and Scaling with Apache Camel - UberConf 2015
Developing, Testing and Scaling with Apache Camel - UberConf 2015Matt Raible
Ā 
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015Matt Raible
Ā 
The Modern Java Web Developer - Denver JUG 2013
The Modern Java Web Developer - Denver JUG 2013The Modern Java Web Developer - Denver JUG 2013
The Modern Java Web Developer - Denver JUG 2013Matt Raible
Ā 
Comparing JVM Web Frameworks - February 2014
Comparing JVM Web Frameworks - February 2014Comparing JVM Web Frameworks - February 2014
Comparing JVM Web Frameworks - February 2014Matt Raible
Ā 
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Matt Raible
Ā 
Introduction to Hardware with littleBits
Introduction to Hardware with littleBitsIntroduction to Hardware with littleBits
Introduction to Hardware with littleBitsTack Mobile
Ā 
Java ēš„é–‹ę”¾åŽŸē¢¼å…Øę–‡ęœå°‹ęŠ€č”“ - Lucene
Java ēš„é–‹ę”¾åŽŸē¢¼å…Øę–‡ęœå°‹ęŠ€č”“ - LuceneJava ēš„é–‹ę”¾åŽŸē¢¼å…Øę–‡ęœå°‹ęŠ€č”“ - Lucene
Java ēš„é–‹ę”¾åŽŸē¢¼å…Øę–‡ęœå°‹ęŠ€č”“ - Luceneå»ŗ興 ēŽ‹
Ā 
DIY Java & Kubernetes
DIY Java & KubernetesDIY Java & Kubernetes
DIY Java & KubernetesPance Cavkovski
Ā 
The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015Matt Raible
Ā 
Moved to https://slidr.io/azzazzel/what-s-not-new-in-modular-java
Moved to https://slidr.io/azzazzel/what-s-not-new-in-modular-javaMoved to https://slidr.io/azzazzel/what-s-not-new-in-modular-java
Moved to https://slidr.io/azzazzel/what-s-not-new-in-modular-javaMilen Dyankov
Ā 
Move from J2EE to Java EE
Move from J2EE to Java EEMove from J2EE to Java EE
Move from J2EE to Java EEHirofumi Iwasaki
Ā 
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011Matt Raible
Ā 
Java EE vs Spring Framework
Java  EE vs Spring Framework Java  EE vs Spring Framework
Java EE vs Spring Framework Rohit Kelapure
Ā 
The Art of AngularJS - DeRailed 2014
The Art of AngularJS - DeRailed 2014The Art of AngularJS - DeRailed 2014
The Art of AngularJS - DeRailed 2014Matt Raible
Ā 
Seven Points for Applying Java EE 7
Seven Points for Applying Java EE 7Seven Points for Applying Java EE 7
Seven Points for Applying Java EE 7Hirofumi Iwasaki
Ā 
Have You Seen Java EE Lately?
Have You Seen Java EE Lately?Have You Seen Java EE Lately?
Have You Seen Java EE Lately?Reza Rahman
Ā 
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015Edward Burns
Ā 
Java EE Revisits GoF Design Patterns
Java EE Revisits GoF Design PatternsJava EE Revisits GoF Design Patterns
Java EE Revisits GoF Design PatternsMurat Yener
Ā 

Viewers also liked (20)

The Modern Java Web Developer Bootcamp - Devoxx 2013
The Modern Java Web Developer Bootcamp - Devoxx 2013The Modern Java Web Developer Bootcamp - Devoxx 2013
The Modern Java Web Developer Bootcamp - Devoxx 2013
Ā 
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Ā 
Developing, Testing and Scaling with Apache Camel - UberConf 2015
Developing, Testing and Scaling with Apache Camel - UberConf 2015Developing, Testing and Scaling with Apache Camel - UberConf 2015
Developing, Testing and Scaling with Apache Camel - UberConf 2015
Ā 
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
Ā 
The Modern Java Web Developer - Denver JUG 2013
The Modern Java Web Developer - Denver JUG 2013The Modern Java Web Developer - Denver JUG 2013
The Modern Java Web Developer - Denver JUG 2013
Ā 
Comparing JVM Web Frameworks - February 2014
Comparing JVM Web Frameworks - February 2014Comparing JVM Web Frameworks - February 2014
Comparing JVM Web Frameworks - February 2014
Ā 
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Ā 
Introduction to Hardware with littleBits
Introduction to Hardware with littleBitsIntroduction to Hardware with littleBits
Introduction to Hardware with littleBits
Ā 
Java ēš„é–‹ę”¾åŽŸē¢¼å…Øę–‡ęœå°‹ęŠ€č”“ - Lucene
Java ēš„é–‹ę”¾åŽŸē¢¼å…Øę–‡ęœå°‹ęŠ€č”“ - LuceneJava ēš„é–‹ę”¾åŽŸē¢¼å…Øę–‡ęœå°‹ęŠ€č”“ - Lucene
Java ēš„é–‹ę”¾åŽŸē¢¼å…Øę–‡ęœå°‹ęŠ€č”“ - Lucene
Ā 
DIY Java & Kubernetes
DIY Java & KubernetesDIY Java & Kubernetes
DIY Java & Kubernetes
Ā 
The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015The Art of AngularJS in 2015 - Angular Summit 2015
The Art of AngularJS in 2015 - Angular Summit 2015
Ā 
Moved to https://slidr.io/azzazzel/what-s-not-new-in-modular-java
Moved to https://slidr.io/azzazzel/what-s-not-new-in-modular-javaMoved to https://slidr.io/azzazzel/what-s-not-new-in-modular-java
Moved to https://slidr.io/azzazzel/what-s-not-new-in-modular-java
Ā 
Move from J2EE to Java EE
Move from J2EE to Java EEMove from J2EE to Java EE
Move from J2EE to Java EE
Ā 
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
HTML5 with Play Scala, CoffeeScript and Jade - Devoxx 2011
Ā 
Java EE vs Spring Framework
Java  EE vs Spring Framework Java  EE vs Spring Framework
Java EE vs Spring Framework
Ā 
The Art of AngularJS - DeRailed 2014
The Art of AngularJS - DeRailed 2014The Art of AngularJS - DeRailed 2014
The Art of AngularJS - DeRailed 2014
Ā 
Seven Points for Applying Java EE 7
Seven Points for Applying Java EE 7Seven Points for Applying Java EE 7
Seven Points for Applying Java EE 7
Ā 
Have You Seen Java EE Lately?
Have You Seen Java EE Lately?Have You Seen Java EE Lately?
Have You Seen Java EE Lately?
Ā 
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015HTTP/2 comes to Java.  What Servlet 4.0 means to you. DevNexus 2015
HTTP/2 comes to Java. What Servlet 4.0 means to you. DevNexus 2015
Ā 
Java EE Revisits GoF Design Patterns
Java EE Revisits GoF Design PatternsJava EE Revisits GoF Design Patterns
Java EE Revisits GoF Design Patterns
Ā 

Similar to The Modern Java Web Developer - JavaOne 2013

Comparing JVM Web Frameworks - Rich Web Experience 2010
Comparing JVM Web Frameworks - Rich Web Experience 2010Comparing JVM Web Frameworks - Rich Web Experience 2010
Comparing JVM Web Frameworks - Rich Web Experience 2010Matt Raible
Ā 
Responsivedesign 7-3-2012
Responsivedesign 7-3-2012Responsivedesign 7-3-2012
Responsivedesign 7-3-2012Thomas Carney
Ā 
ACADGILD:: FRONTEND LESSON -Ruby on rails vs groovy on rails
ACADGILD:: FRONTEND LESSON -Ruby on rails vs groovy on railsACADGILD:: FRONTEND LESSON -Ruby on rails vs groovy on rails
ACADGILD:: FRONTEND LESSON -Ruby on rails vs groovy on railsPadma shree. T
Ā 
intoduction to Grails Framework
intoduction to Grails Frameworkintoduction to Grails Framework
intoduction to Grails FrameworkHarshdeep Kaur
Ā 
AngularJS Anatomy & Directives
AngularJS Anatomy & DirectivesAngularJS Anatomy & Directives
AngularJS Anatomy & DirectivesDigikrit
Ā 
web development in 2024 - website development
web development in 2024 - website developmentweb development in 2024 - website development
web development in 2024 - website developmentGoa App
Ā 
Node PDX: Intro to Sails.js
Node PDX: Intro to Sails.jsNode PDX: Intro to Sails.js
Node PDX: Intro to Sails.jsMike McNeil
Ā 
Krishnakumar Rajendran (1)
Krishnakumar Rajendran (1)Krishnakumar Rajendran (1)
Krishnakumar Rajendran (1)Krishna Rajendran
Ā 
Angular 6 Training with project in hyderabad india
Angular 6 Training with project in hyderabad indiaAngular 6 Training with project in hyderabad india
Angular 6 Training with project in hyderabad indiaphp2ranjan
Ā 
Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | IntroductionJohnTaieb
Ā 
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011Matt Raible
Ā 
How Scala, Wicket, and Java EE Can Improve Web Development
How Scala, Wicket, and Java EE Can Improve Web DevelopmentHow Scala, Wicket, and Java EE Can Improve Web Development
How Scala, Wicket, and Java EE Can Improve Web DevelopmentBruno Borges
Ā 
Responsive Design - What you need
Responsive Design - What you need Responsive Design - What you need
Responsive Design - What you need Justus Wilde
Ā 
Introduction to Client Side Dev in SharePoint Workshop
Introduction to Client Side Dev in SharePoint WorkshopIntroduction to Client Side Dev in SharePoint Workshop
Introduction to Client Side Dev in SharePoint WorkshopMark Rackley
Ā 
Cross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkCross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkTroy Miles
Ā 
Angular VS React The Battle of Best Front End Frameworks.pdf
Angular VS React The Battle of Best Front End Frameworks.pdfAngular VS React The Battle of Best Front End Frameworks.pdf
Angular VS React The Battle of Best Front End Frameworks.pdfJS Panther Pvt. Ltd.
Ā 
Vidula_Vijayrao_Darekar
Vidula_Vijayrao_DarekarVidula_Vijayrao_Darekar
Vidula_Vijayrao_DarekarVidula Darekar
Ā 
10 Best Web Development Frameworks for Your Business Needs
10 Best Web Development Frameworks for Your Business Needs10 Best Web Development Frameworks for Your Business Needs
10 Best Web Development Frameworks for Your Business NeedsSofiaCarter4
Ā 

Similar to The Modern Java Web Developer - JavaOne 2013 (20)

Comparing JVM Web Frameworks - Rich Web Experience 2010
Comparing JVM Web Frameworks - Rich Web Experience 2010Comparing JVM Web Frameworks - Rich Web Experience 2010
Comparing JVM Web Frameworks - Rich Web Experience 2010
Ā 
Responsivedesign 7-3-2012
Responsivedesign 7-3-2012Responsivedesign 7-3-2012
Responsivedesign 7-3-2012
Ā 
ACADGILD:: FRONTEND LESSON -Ruby on rails vs groovy on rails
ACADGILD:: FRONTEND LESSON -Ruby on rails vs groovy on railsACADGILD:: FRONTEND LESSON -Ruby on rails vs groovy on rails
ACADGILD:: FRONTEND LESSON -Ruby on rails vs groovy on rails
Ā 
intoduction to Grails Framework
intoduction to Grails Frameworkintoduction to Grails Framework
intoduction to Grails Framework
Ā 
AngularJS Anatomy & Directives
AngularJS Anatomy & DirectivesAngularJS Anatomy & Directives
AngularJS Anatomy & Directives
Ā 
web development in 2024 - website development
web development in 2024 - website developmentweb development in 2024 - website development
web development in 2024 - website development
Ā 
Responsive design
Responsive designResponsive design
Responsive design
Ā 
Node PDX: Intro to Sails.js
Node PDX: Intro to Sails.jsNode PDX: Intro to Sails.js
Node PDX: Intro to Sails.js
Ā 
3d web
3d web3d web
3d web
Ā 
Krishnakumar Rajendran (1)
Krishnakumar Rajendran (1)Krishnakumar Rajendran (1)
Krishnakumar Rajendran (1)
Ā 
Angular 6 Training with project in hyderabad india
Angular 6 Training with project in hyderabad indiaAngular 6 Training with project in hyderabad india
Angular 6 Training with project in hyderabad india
Ā 
Front End Development | Introduction
Front End Development | IntroductionFront End Development | Introduction
Front End Development | Introduction
Ā 
Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011Comparing JVM Web Frameworks - TSSJS 2011
Comparing JVM Web Frameworks - TSSJS 2011
Ā 
How Scala, Wicket, and Java EE Can Improve Web Development
How Scala, Wicket, and Java EE Can Improve Web DevelopmentHow Scala, Wicket, and Java EE Can Improve Web Development
How Scala, Wicket, and Java EE Can Improve Web Development
Ā 
Responsive Design - What you need
Responsive Design - What you need Responsive Design - What you need
Responsive Design - What you need
Ā 
Introduction to Client Side Dev in SharePoint Workshop
Introduction to Client Side Dev in SharePoint WorkshopIntroduction to Client Side Dev in SharePoint Workshop
Introduction to Client Side Dev in SharePoint Workshop
Ā 
Cross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkCross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic Framework
Ā 
Angular VS React The Battle of Best Front End Frameworks.pdf
Angular VS React The Battle of Best Front End Frameworks.pdfAngular VS React The Battle of Best Front End Frameworks.pdf
Angular VS React The Battle of Best Front End Frameworks.pdf
Ā 
Vidula_Vijayrao_Darekar
Vidula_Vijayrao_DarekarVidula_Vijayrao_Darekar
Vidula_Vijayrao_Darekar
Ā 
10 Best Web Development Frameworks for Your Business Needs
10 Best Web Development Frameworks for Your Business Needs10 Best Web Development Frameworks for Your Business Needs
10 Best Web Development Frameworks for Your Business Needs
Ā 

More from Matt Raible

Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022
Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022
Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022Matt Raible
Ā 
Micro Frontends for Java Microservices - Belfast JUG 2022
Micro Frontends for Java Microservices - Belfast JUG 2022Micro Frontends for Java Microservices - Belfast JUG 2022
Micro Frontends for Java Microservices - Belfast JUG 2022Matt Raible
Ā 
Micro Frontends for Java Microservices - Dublin JUG 2022
Micro Frontends for Java Microservices - Dublin JUG 2022Micro Frontends for Java Microservices - Dublin JUG 2022
Micro Frontends for Java Microservices - Dublin JUG 2022Matt Raible
Ā 
Micro Frontends for Java Microservices - Cork JUG 2022
Micro Frontends for Java Microservices - Cork JUG 2022Micro Frontends for Java Microservices - Cork JUG 2022
Micro Frontends for Java Microservices - Cork JUG 2022Matt Raible
Ā 
Comparing Native Java REST API Frameworks - Seattle JUG 2022
Comparing Native Java REST API Frameworks - Seattle JUG 2022Comparing Native Java REST API Frameworks - Seattle JUG 2022
Comparing Native Java REST API Frameworks - Seattle JUG 2022Matt Raible
Ā 
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022Matt Raible
Ā 
Comparing Native Java REST API Frameworks - Devoxx France 2022
Comparing Native Java REST API Frameworks - Devoxx France 2022Comparing Native Java REST API Frameworks - Devoxx France 2022
Comparing Native Java REST API Frameworks - Devoxx France 2022Matt Raible
Ā 
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...Matt Raible
Ā 
Native Java with Spring Boot and JHipster - Garden State JUG 2021
Native Java with Spring Boot and JHipster - Garden State JUG 2021Native Java with Spring Boot and JHipster - Garden State JUG 2021
Native Java with Spring Boot and JHipster - Garden State JUG 2021Matt Raible
Ā 
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Matt Raible
Ā 
Web App Security for Java Developers - PWX 2021
Web App Security for Java Developers - PWX 2021Web App Security for Java Developers - PWX 2021
Web App Security for Java Developers - PWX 2021Matt Raible
Ā 
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...Matt Raible
Ā 
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...Matt Raible
Ā 
Web App Security for Java Developers - UberConf 2021
Web App Security for Java Developers - UberConf 2021Web App Security for Java Developers - UberConf 2021
Web App Security for Java Developers - UberConf 2021Matt Raible
Ā 
Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021Matt Raible
Ā 
Native Java with Spring Boot and JHipster - SF JUG 2021
Native Java with Spring Boot and JHipster - SF JUG 2021Native Java with Spring Boot and JHipster - SF JUG 2021
Native Java with Spring Boot and JHipster - SF JUG 2021Matt Raible
Ā 
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...Matt Raible
Ā 
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021Matt Raible
Ā 
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021Matt Raible
Ā 
JHipster and Okta - JHipster Virtual Meetup December 2020
JHipster and Okta - JHipster Virtual Meetup December 2020JHipster and Okta - JHipster Virtual Meetup December 2020
JHipster and Okta - JHipster Virtual Meetup December 2020Matt Raible
Ā 

More from Matt Raible (20)

Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022
Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022
Keep Identities in Sync the SCIMple Way - ApacheCon NA 2022
Ā 
Micro Frontends for Java Microservices - Belfast JUG 2022
Micro Frontends for Java Microservices - Belfast JUG 2022Micro Frontends for Java Microservices - Belfast JUG 2022
Micro Frontends for Java Microservices - Belfast JUG 2022
Ā 
Micro Frontends for Java Microservices - Dublin JUG 2022
Micro Frontends for Java Microservices - Dublin JUG 2022Micro Frontends for Java Microservices - Dublin JUG 2022
Micro Frontends for Java Microservices - Dublin JUG 2022
Ā 
Micro Frontends for Java Microservices - Cork JUG 2022
Micro Frontends for Java Microservices - Cork JUG 2022Micro Frontends for Java Microservices - Cork JUG 2022
Micro Frontends for Java Microservices - Cork JUG 2022
Ā 
Comparing Native Java REST API Frameworks - Seattle JUG 2022
Comparing Native Java REST API Frameworks - Seattle JUG 2022Comparing Native Java REST API Frameworks - Seattle JUG 2022
Comparing Native Java REST API Frameworks - Seattle JUG 2022
Ā 
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Ā 
Comparing Native Java REST API Frameworks - Devoxx France 2022
Comparing Native Java REST API Frameworks - Devoxx France 2022Comparing Native Java REST API Frameworks - Devoxx France 2022
Comparing Native Java REST API Frameworks - Devoxx France 2022
Ā 
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
Ā 
Native Java with Spring Boot and JHipster - Garden State JUG 2021
Native Java with Spring Boot and JHipster - Garden State JUG 2021Native Java with Spring Boot and JHipster - Garden State JUG 2021
Native Java with Spring Boot and JHipster - Garden State JUG 2021
Ā 
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021
Ā 
Web App Security for Java Developers - PWX 2021
Web App Security for Java Developers - PWX 2021Web App Security for Java Developers - PWX 2021
Web App Security for Java Developers - PWX 2021
Ā 
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Ā 
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
Ā 
Web App Security for Java Developers - UberConf 2021
Web App Security for Java Developers - UberConf 2021Web App Security for Java Developers - UberConf 2021
Web App Security for Java Developers - UberConf 2021
Ā 
Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021
Ā 
Native Java with Spring Boot and JHipster - SF JUG 2021
Native Java with Spring Boot and JHipster - SF JUG 2021Native Java with Spring Boot and JHipster - SF JUG 2021
Native Java with Spring Boot and JHipster - SF JUG 2021
Ā 
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Ā 
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Ā 
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Ā 
JHipster and Okta - JHipster Virtual Meetup December 2020
JHipster and Okta - JHipster Virtual Meetup December 2020JHipster and Okta - JHipster Virtual Meetup December 2020
JHipster and Okta - JHipster Virtual Meetup December 2020
Ā 

Recently uploaded

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
Ā 
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
Ā 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
Ā 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
Ā 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
Ā 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
Ā 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
Ā 
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
Ā 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
Ā 
SIEMENS: RAPUNZEL ā€“ A Tale About Knowledge Graph
SIEMENS: RAPUNZEL ā€“ A Tale About Knowledge GraphSIEMENS: RAPUNZEL ā€“ A Tale About Knowledge Graph
SIEMENS: RAPUNZEL ā€“ A Tale About Knowledge GraphNeo4j
Ā 
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
Ā 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
Ā 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
Ā 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
Ā 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsPrecisely
Ā 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
Ā 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
Ā 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
Ā 
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
Ā 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
Ā 

Recently uploaded (20)

Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Ā 
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
Ā 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
Ā 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
Ā 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
Ā 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
Ā 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
Ā 
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
Ā 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Ā 
SIEMENS: RAPUNZEL ā€“ A Tale About Knowledge Graph
SIEMENS: RAPUNZEL ā€“ A Tale About Knowledge GraphSIEMENS: RAPUNZEL ā€“ A Tale About Knowledge Graph
SIEMENS: RAPUNZEL ā€“ A Tale About Knowledge Graph
Ā 
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...
Ā 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Ā 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
Ā 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
Ā 
Unlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power SystemsUnlocking the Potential of the Cloud for IBM Power Systems
Unlocking the Potential of the Cloud for IBM Power Systems
Ā 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
Ā 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
Ā 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
Ā 
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
Ā 
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
Ā 

The Modern Java Web Developer - JavaOne 2013

  • 1. The Modern Java Web Developer Matt Raible ā€¢ http://raibledesigns.com Photos by Trish McGinity and Art Escobado 2013
  • 2. Ā© 2013 Raible Designs Blogger on raibledesigns.com Founder of AppFuse Father, Skier, Cyclist Web Framework Connoisseur Who is Matt Raible?
  • 3. Ā© 2013 Raible Designs How about YOU? Have you developed a Struts 1 application? Used PHP? Have you every written CSS from scratch? Why do you hate JavaScript? Whatā€™s your favorite JavaScript framework?
  • 4. Ā© 2013 Raible Designs Topic Inspiration Inspired by Ben Evanā€™s and Martijn Verburgā€™s The Well-Grounded Java Developer Developing with Java 7 Vital techniques Polyglot programming on the JVM Crafting the polyglot project
  • 5. Ā© 2013 Raible Designs Purpose
  • 6. Ā© 2013 Raible Designs The Modern Java Web Developer JVM
  • 7. Ā© 2013 Raible Designs The Modern JVM Web Developer Starts with Fast Hardware Uses IntelliJ IDEA Leverages jQuery, HTML5, and CSS3 Creates High Performance Web Sites For Mobile Devices, in the Cloud And cares about Security
  • 8. Ā© 2013 Raible Designs Fast Hardware
  • 9. Ā© 2013 Raible Designs IntelliJ IDEA
  • 10. Ā© 2013 Raible Designs Supports Zen Coding* div#page>div.logo+ul#navigation>li*5>a <div id=page> <div class=logo></div> <ul id=navigation> <li><a href=></a></li> <li><a href=></a></li> <li><a href=></a></li> <li><a href=></a></li> <li><a href=></a></li> </ul> </div> * In recent versions it has been renamed to Emmet
  • 11. Ā© 2013 Raible Designs Java 7 and 8 Strings in switch statements Diamond Syntax Try with resources Improved exception handling with multi-catch NIO.2: Path, Files and Asynchronous I/O Path path = FileSystems.getDefault().getPath(logs, access.log); BufferReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8);
  • 12. Ā© 2013 Raible Designs Java 7 and 8 Parallel Collections JSR 310 Date and Time API Functional Interfaces with default method Lambda Expressions (a.k.a. Closures) Nashorn JavaScript Engine // sort a list by lastName List<Person> persons = ...; persons.sort((p1, p2) -> p1.getLastName().compareTo(p2.getLastName()));
  • 13. Ā© 2013 Raible Designs %s/Hibernate/Spring Data Servlet 3 @WebServlet, @WebFilter, @WebListener Asynchronous Servlets WebApplicationInitializer (to eliminate web.xml) REST and Functional Programming The Modern JVM Web Developer is aware of...
  • 14. Ā© 2013 Raible Designs Reactive Applications ā€œUsers expect millisecond response times and 100% uptime. Data needs are expanding into the petabytes.ā€ The Reactive Manifesto
  • 15. Ā© 2013 Raible Designs Key Building Blocks Observable Models Event Streams Stateful Clients
  • 16. Ā© 2013 Raible Designs Avatar? avatar.java.net
  • 17. Ā© 2013 Raible Designs Scala ā€œScala is like the dragon in Avatar. It will try to kill you, but if you master it, you can ļ¬‚y great distances with it and have a wonderful time.ā€ -- Venkat Subramaniam
  • 18. Ā© 2013 Raible Designs Scala Basics def starts a method variables are started with var or val variables are deļ¬ned with name:type semicolons are not required
  • 19. Ā© 2013 Raible Designs public class Car { private final int year; private int miles; public int getYear() { return year; } public int getMiles() { return miles; } public void setMiles(int theMiles) { miles = theMiles; } public Car(int theYear, int theMiles) { year = theYear; miles = theMiles; } } Scala vs. Java
  • 20. Ā© 2013 Raible Designs Scala vs. Java class Car(val year: Int, var miles: Int)
  • 21. Ā© 2013 Raible Designs What about Groovy?
  • 22. Ā© 2013 Raible Designs Groovy is still hot...
  • 23. Ā© 2013 Raible Designs But sliding to Scala
  • 24. Ā© 2013 Raible Designs Learning Scala Scala for the Impatient - Cay Horstmann Programming in Scala, 2nd Edition - Martin Odersky, Lex Spoon, and Bill Venners Functional Programming Principles in Scala September 16th 2013 (7 weeks long) Signup at https://www.coursera.org/course/progfun
  • 25. Ā© 2013 Raible Designs The Java Language ā€œJava remains ā€“ in spite of the fragmented programming language landscape ā€“ a viable, growing language.ā€ http://redmonk.com/sogrady/2012/02/08/language-rankings-2-2012/
  • 26. Ā© 2013 Raible Designs and ... itā€™s still the most popular!
  • 27. Ā© 2013 Raible Designs The Services Developer
  • 28. Ā© 2013 Raible Designs Fast APIs JAX-RS Dropwizard
  • 29. Ā© 2013 Raible Designs Document Your API
  • 30. Ā© 2013 Raible Designs Document Your API
  • 31. Ā© 2013 Raible Designs But if want to remain a Web Developer...
  • 32. Ā© 2013 Raible Designs Modern Principles
  • 33. Ā© 2013 Raible Designs Browser Tools Firebug for FireFox Chrome Developer Tools Elements & Console Settings PageSpeed Insights http://www.igvita.com/slides/2012/devtools-tips-and-tricks
  • 34. Ā© 2013 Raible Designs jQuery http://trends.builtwith.com/javascript/jQuery
  • 35. Ā© 2013 Raible Designs jQuery JavaScript Distribution in Top 10,000 Sites http://trends.builtwith.com/javascript
  • 36. Ā© 2013 Raible Designs jQuery jQuery CDN at http://code.jquery.com/ $(document).ready $(document).on(ā€˜clickā€™, ā€˜#selectorā€™, function() {}) jQuery UI for Dialogs, Sliders, Calendars $.ajax and $(ā€˜#divā€™).load(url)
  • 37. Ā© 2013 Raible Designs JavaScript The Good Parts Lambda Dynamic Objects Loose Typing Object Literals
  • 38. Ā© 2013 Raible Designs JavaScript Tips http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/
  • 39. Ā© 2013 Raible Designs JavaScript Programming Patterns The Old-School Way Singleton Module Pattern Revealing Module Pattern Custom Objects Lazy Function Deļ¬nition http://www.klauskomenda.com/code/javascript-programming-patterns/
  • 40. Ā© 2013 Raible Designs Revealing Module Pattern
  • 41. Ā© 2013 Raible Designs CoffeeScript
  • 42. Ā© 2013 Raible Designs AngularJS A JavaScript MVW Framework From Google, MIT Licensed Data-binding, Controllers, Dependency Injection Localization, Components, Testable Angular-seed for Scaļ¬€olding Great Documentation and Community
  • 43. Ā© 2013 Raible Designs AngularJS Basics
  • 44. Ā© 2013 Raible Designs Simpliļ¬ed by one man: Addy Osmani Journey Through The JavaScript MVC Jungle Learning JavaScript Design Patterns Choosing a JavaScript MVC Framework
  • 45. Ā© 2013 Raible Designs Or Just Choose AngularJS http://bit.ly/UICDZi
  • 46. Ā© 2013 Raible Designs My Angular JS Experience
  • 47. Ā© 2013 Raible Designs HTML5 http://on.wsj.com/tEGIJL
  • 48. Ā© 2013 Raible Designs How do you write HTML5? <!DOCTYPE html> <article> <aside> <section> <header> <footer> <nav> <audio> <canvas> <video> <datalist> <details> https://developer.mozilla.org/en-US/docs/HTML/HTML5 <applet> <center> <font> <frame> <frameset>
  • 49. Ā© 2013 Raible Designs <form> <input type=text required> <input type=submit value=Search/> </form> <form> <input type=text autofocus> <input type=submit value=Search/> </form> HTML5 Forms http://diveintohtml5.info/forms.html <form> <input type=text placeholder=Enter your search terms> <input type=submit value=Search/> </form>
  • 50. Ā© 2013 Raible Designs <form> <input type=email> <input type=submit value=Go> </form> HTML5 Forms
  • 51. Ā© 2013 Raible Designs HTML5 Killer Features Editable Text
  • 52. Ā© 2013 Raible Designs HTML5 Killer Features
  • 53. Ā© 2013 Raible Designs CSS3 Secrets Animated Transitions Rounded Corners Drop Shadows Gradient Colors Styling based on sibling count More cursors for better usability http://lea.verou.me/css3-secrets transform: rotateY(180deg); border-radius: 8px 8px 0 0; box-shadow: 2px 2px 4px 4px;
  • 54. Ā© 2013 Raible Designs CSS3 Media Queries /* Smartphones (portrait and landscape) ----------- */ @media only screen and (min-device-width: 320px) and (max-device-width: 854px) { body { padding: 10px; } textarea { width: 90%; } } /* iPad (portrait and landscape) ----------- */ @media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { body { padding-top: 50px; } }
  • 55. Ā© 2013 Raible Designs Cool HTML5 Demos http://fff.cmiscm.com
  • 56. Ā© 2013 Raible Designs Bootstrap Good-looking websites by default Layouts, navs, pagination, buttons Mobile First (aka Responsive Design) Over a dozen Custom jQuery Plugins Themes from {wrap}bootstrap (Market) and Bootswatch (OSS)
  • 57. Ā© 2013 Raible Designs LESS the dynamic stylesheet language
  • 58. Ā© 2013 Raible Designs High Performance Web Sites 1. Make Fewer HTTP Requests 2. Use a Content Delivery Network 3. Add Expires Headers 4. Gzip Components 5. Put Stylesheets at the Top 6. Put Scripts at the Bottom 7. Avoid CSS Expressions
  • 59. Ā© 2013 Raible Designs High Performance Web Sites 8. Make JavaScript and CSS External 9. Reduce DNS Lookups 10. Minify JavaScript 11. Avoid Redirects 12. Remove Duplicates Scripts 13. Conļ¬gure ETags 14. Make Ajax Cacheable
  • 60. Ā© 2013 Raible Designs My Page Speed Experience Biggest Problem is HTTP Requests Minify and Concatenate GZipping has biggest score gain Expires Headers for Browser Caching Use Apache or Nginx Image Sprites for CSS http://spritecow.com is great
  • 61. Ā© 2013 Raible Designs Wro4j Open Source Java project for optimization of web resources Provides concatenation and minimization of JS and CSS Gzip, YUI Compressor, JsHint, JsHint, CssLint, LESS, SASS, Coļ¬€eeScript, Dojo Shrinksafe
  • 62. Ā© 2013 Raible Designs Sidenote: WebJars and UrlRewrite Filter WebJars: client-side web libraries packages in JARs http://webjars.org Servlet 3, Play 2, Grails, Dropwizard, Spring MVC, Tapestry and Wicket UrlRewriteFilter: like Apacheā€™s mod_rewrite http://tuckey.org/urlrewrite Clean URLs and just about everything else Spring MVCā€™s <default-servlet-handler/> is your friend
  • 63. Ā© 2013 Raible Designs Techniques Versioning Static Assets with UrlRewriteFilter http://raibledesigns.com/rd/entry/versioning_static_assets_with_urlrewriteļ¬lter Adding web resource ļ¬ngerprinting to AppFuse with wro4j http://www.operatornew.com/2012/10/adding-web-resource-ļ¬ngerprinting- to.html Improving AppFuseā€™s PageSpeed with Apache http://raibledesigns.com/rd/entry/improving_appfuse_s_pagespeed_with
  • 64. Ā© 2013 Raible Designs But what about nginx? An open-source, high-performance HTTP server and reverse proxy, as well as an IMAP/POP3 proxy server Powers Netļ¬‚ix, Wordpress.com, GitHub and Heroku http://kevinworthington.com/nginx-for-mac-os-x-mountain-lion-in-2- minutes/
  • 65. Ā© 2013 Raible Designs Apache Gzip and Expires Headers mod_pagespeed - https://developers.google.com/speed/pagespeed/mod Automatically applies web performance best practices w/o modiļ¬cation Improving AppFuseā€™s PageSpeed with Apache Conļ¬gured mod_deļ¬‚ate, mod_expires and turned on KeepAlive PageSpeed went from 24 to 96! YSlow went from 90 to 98
  • 66. Ā© 2013 Raible Designs <IfModule mod_deflate.c> Ā  Ā  SetOutputFilter DEFLATE Ā  Ā  AddOutputFilterByType DEFLATE text/plain text/html text/xml text/css application/xml application/xhtml+xml application/rss+xml application/javascript application/x-javascript Ā  Ā  DeflateCompressionLevel 9 Ā  Ā  BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4.0[678] no-gzip BrowserMatch bMSIE !no-gzip !gzip-only-text/html DeflateFilterNote Input instream DeflateFilterNote Output outstream DeflateFilterNote Ratio ratio LogFormat '%r %{outstream}n/%{instream}n (%{ratio}n%%)' deflate </IfModule> /etc/httpd/conf.d/deflate.conf
  • 67. Ā© 2013 Raible Designs <IfModule mod_expires.c> Ā  Ā  ExpiresActive On Ā  Ā  <FilesMatch .(jpe?g|png|gif|js|css)$> Ā  Ā  Ā  Ā  ExpiresDefault access plus 1 week Ā  Ā  </FilesMatch> Ā  Ā  ExpiresByType image/jpeg access plus 1 week Ā  Ā  ExpiresByType image/png access plus 1 week Ā  Ā  ExpiresByType image/gif access plus 1 week Ā  Ā  ExpiresByType text/css access plus 1 week Ā  Ā  ExpiresByType application/javascript access plus 1 week Ā  Ā  ExpiresByType application/x-javascript access plus 1 week </IfModule> /etc/httpd/conf.d/expires.conf
  • 68. Ā© 2013 Raible Designs Application Architecture Server to Client Performance implications Twitter Airbnb Charm Ajaxiļ¬ed Body with pjax https://github.com/defunkt/jquery-pjax
  • 69. Ā© 2013 Raible Designs Mobile Devices If developing a mobile app with web technologies Use PhoneGap or Sencha Touch Otherwise, add a viewport meta tag <meta name=viewport content=width=device- width, initial-scale=1.0>
  • 70. Ā© 2013 Raible Designs Mobile Devices - CSS3 Media Queries /* Smartphones (portrait and landscape) ----------- */ @media only screen and (min-device-width: 320px) and (max-device-width: 854px) { /* Smartphone rules */ } /* iPad (portrait and landscape) ----------- */ @media only screen and (min-device-width: 768px) and (max-device-width: 1024px) { /* Tablet rules */ }
  • 71. Ā© 2013 Raible Designs Mobile Devices - Hide Address Bar <script type=text/javascript> // Hide address bar for smartphones /Mobile/.test(navigator.userAgent) && !location.hash && setTimeout(function () { if (!pageYOffset) window.scrollTo(0, 1); }, 1000); </script>
  • 72. Ā© 2013 Raible Designs Mobile Devices - Disable Focus Zoom (function(doc) { var addEvent = 'addEventListener', type = 'gesturestart', qsa = 'querySelectorAll', scales = [1, 1], meta = qsa in doc ? doc[qsa]('meta[name=viewport]') : []; function fix() { meta.content = 'width=device-width,minimum-scale=' + scales[0] + ',maximum-scale=' + scales[1]; doc.removeEventListener(type, fix, true); } if ((meta = meta[meta.length - 1]) && addEvent in doc) { fix(); scales = [.25, 1.6]; doc[addEvent](type, fix, true); } }(document));
  • 73. Ā© 2013 Raible Designs The Cloud
  • 74. Ā© 2013 Raible Designs The Cloud Supports Ruby, Node.js, Clojure, Java, Python and Scala
  • 75. Ā© 2013 Raible Designs The Cloud Supports Spring, Grails, Scala, Play, Node.js, Ruby/ Rails/Sinatra Services: MySQL, PostgreSQL, MongoDB, Redis, RabbitMQ
  • 76. Ā© 2013 Raible Designs The Cloud
  • 77. Ā© 2013 Raible Designs Apache TomEE
  • 78. Ā© 2013 Raible Designs Security Matters Be aware of SQL and Content Injection Disable Cross-Site Scripting (XSS) Donā€™t give too much information in error pages and exceptions Stop unvalidated redirects and forwards Always use https if your application has private data Understand what browsers have to deal with
  • 79. Ā© 2013 Raible Designs The Modern JVM Web Developer Starts with Fast Hardware Uses IntelliJ IDEA Leverages jQuery, HTML5, and CSS3 Creates High Performance Web Sites For Mobile Devices, in the Cloud And cares about Security
  • 80. Ā© 2013 Raible Designs Staying Modern Read Attend Conferences Submit a talk! Write Do Get Paid Open Source
  • 81. Ā© 2013 Raible Designs Contact Me! http://raibledesigns.com @mraible Presentations http://slideshare.net/mraible Code http://github.com/mraible Questions?