Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015


Published on

YouTube of this talk:

Building a modern web (or mobile) application requires a lot of tools, frameworks and techniques. This session shows how JHipster unites popular frameworks like AngularJS, Spring Boot and Bootstrap. Using Yeoman, a scaffolding tool for modern webapps, JHipster will generate a project for you and allow you to use Java 7 or 8, SQL or NoSQL databases, Spring profiles, Maven or Gradle, Grunt or Gulp.js, WebSockets and BrowserSync. It also supports a number of different authentication mechanisms: classic session-based auth, OAuth 2.0, or token-based authentication. For cloud deployments, JHipster includes out-of-the-box support for Cloud Foundry, Heroku and Openshift.

Published in: Technology

Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Devoxx 2015

  1. 1. Photos by Get Hip with JHipster! Matt Raible •
  2. 2. Blogger on Founder of AppFuse Father, Skier, Mountain Biker, Whitewater Rafter Web Framework Connoisseur Who is Matt Raible? Bus Lover
  3. 3. What about YOU? Are you a Java Developer? How long have you been doing web development? Do you like JSF? Do you like GWT? Do you like JavaScript?
  4. 4. Do you want to be a hip Java Developer?
  5. 5. Java 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()));
  6. 6. Hipster n. noun 1. One who is exceptionally aware of or interested in the latest trends and tastes.
  7. 7. Latest trends in JavaLand? Annotations Environments: dev, test, production Microservices Container-less Deployment Monitoring
  8. 8. Spring Boot Create stand-alone Spring applications Embeds Tomcat, Jetty or Undertow directly Provides opinionated 'starter' POMs to simplify your Maven configuration Also supports/promotes using Gradle
  9. 9. Spring Boot Automatically configures Spring whenever possible Provides production-ready features such as metrics, health checks and externalized configuration Absolutely no code generation and no requirement for XML configuration Grails 3.0 is based on Spring Boot
  11. 11. Spring Boot Demo
  12. 12. Latest trends in Web Development? JavaScript MVC Frameworks CSS 3 with Animations Mobile First Front-End Optimization REST APIs
  13. 13. Google Trends
  14. 14. Google Trends
  15. 15. The most starred project on GitHub?
  16. 16. Wouldn’t it be hip if…? ⚭
  17. 17. JHipster
  18. 18. JHipster Project Web Statistics, October 2015 275K Page Views 10K Downloads GitHub Statistics 2961 Stars 159 Contributors
  19. 19. JHipster Downloads
  20. 20. JHipster Spring Boot Spring Security AngularJS Bootstrap Metrics Java 7 or Java 8 Maven or Gradle Authentication Type: cookie-based (with Social), token-based or OAuth2 Type of Database: SQL or NoSQL Caching: EhCache or Hazelcast Grunt or Gulp.js Foundational Frameworks Project Options
  21. 21. JHipster Features Authentication and Security Spring Boot Metrics Dashboard Bootstrap and AngularJS Integrated REST API with Spring MVC JPA Support and NoSQL Support CRUD Generation Internationalization
  22. 22. Yeoman The web's scaffolding tool for modern webapps Helps you kickstart new projects Promotes the Yeoman workflow
  23. 23. Browsersync
  24. 24. Demo Time!
  25. 25. Generate a basic blog application Look at its configuration 
 Generate the CRUD entities Limit blogs to current user, allow HTML Deploy to Demo Goals … all in 30 minutes!
  26. 26. Demo Application
  27. 27. High Performance Scala, Akka and Netty Nice HTML-based Reporting Scenario Recorder Load Testing with Gatling val scn = scenario("Test the Blog entity")
 .exec(http("First unauthenticated request")
 .formParam("username", "admin")
 .formParam("password", "admin")
 .exec(http("Authenticated request")
 .repeat(2) {
 exec(http("Get all blogs")
 .pause(10 seconds, 20 seconds)
 .exec(http("Create new blog")
 .body(StringBody("""{"id":null, "name":"SAMPLE_TEXT", "handle"
  28. 28.!/news/entry/adding-protractor-tests What about UI Testing?
  29. 29. How sweet is JHipster?! AngularJS, Java 8, Microservices - what more could you want?
  30. 30. Angular 2.0 <input type="text" [value]="firstName"> <button (click)="addPerson()">Add</button> <input type="checkbox" [checked]="someProperty">
  31. 31. Concepts Eliminated in Angular 2.0 Controllers Directive Definition Object $scope angular.module jqLite
  32. 32. Angular 2: Template Syntax
  33. 33. The JHipster Mini-Book Written with Asciidoctor Quick and to the point, 130 pages Developed a Real World App: Free Download from
  34. 34. Lines of Code in 21-Points 0 3500 7000 10500 14000 Project Created Entities Generated Business Logic and UI 13,888 12,736 8,556
  35. 35. Project Creation Entities Generated Biz Logic and UI 0 3500 7000 10500 14000 2,323 2,214 1,465 4,044 3,776 2,595 6,087 5,505 3,752 Java JavaScript HTML Lines of Code by Language
  36. 36. Learn More
  37. 37. The JHipster Mini-Book 1.0 Release on October 30 @jhipster_book
  38. 38. Stay hip by following me! @mraible Presentations Code Questions?