SlideShare a Scribd company logo
CREATING MODULAR TEST DRIVEN SPAS WITH SPRING AND 
ANGULAR JS 
Created by Gunnar Hillert / @ghillert
GOALS 
AngularJS Overview 
Build and Deployment 
Integration with Spring 
Testing 
Modularization 
UI Considerations
ME 
(Java) Web developer since 2005 
Struts 1+2, Spring MVC, GWT, Flex 
Spring Integration + XD committer 
AngularJS since Jan 2014
AUDIENCE - WHAT DO YOU USE? 
AngularJS? 50% 
Backbone? 20% 
JQuery? 90% 
Are you using any other SPA Framework? ExtJS 
Spring MVC? 60% 
Spring Boot? 10%

Recommended for you

Spring boot
Spring bootSpring boot
Spring boot

Spring boot is a great and relatively a new project from Spring.io. The presentation discusses about basics of spring boot to advance topics. Sample demo apps are available here : https://github.com/bhagwat/spring-boot-samples

spring bootgradlegorm
introduction to Vue.js 3
introduction to Vue.js 3 introduction to Vue.js 3
introduction to Vue.js 3

Vue.js is a progressive JavaScript framework that focuses on building user interfaces and is used for single-page applications. It was created by Evan You and released in 2014. Vue.js uses declarative templates and reactive data binding to render the view layer for an application. Templates in Vue use HTML-based syntax with directives prefixed with v- to dynamically bind expression results. Common directives include v-bind, v-if, and v-for. Vue.js applications can be built with its core library or integrated with other libraries and frameworks.

vuevue.jsvuejs
Web sockets in Angular
Web sockets in AngularWeb sockets in Angular
Web sockets in Angular

This document discusses WebSockets and their use in Angular applications. It contains the following information: 1. An introduction to WebSockets, including what they are, where server push is needed, and how to use them in plain JavaScript. 2. Two ways to use WebSockets in Angular - manually creating WebSocket objects or using RxJS WebSocketSubject. 3. A code example of a WebSocket service in Angular that wraps a WebSocket object and exposes it as an Observable stream.

angularwebsocketrxjs
WHAT ARE SPAS? 
A single-page application (SPA), also known as 
single-page interface (SPI), is a web application 
or web site that fits on a single web page with the 
goal of providing a more fluid user experience 
akin to a desktop application. 
Wikipedia
WHAT ARE SPAS?
JAVASCRIPT WTF 1/2 
http://wtfjs.com/ 
parseInt('crap'); // NaN 
parseInt('crap', 16); // 12 
NaN 
12
JAVASCRIPT WTF 2/2 
http://wtfjs.com/ 
(2 + "3"); // 23 
(2 + +"3"); // 5 
(+""); // 0 
23 
5 
0

Recommended for you

Managing JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJSManaging JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJS

This document discusses how to manage JavaScript dependencies using RequireJS. It begins by showing the many different types of JavaScript dependencies that exist, such as libraries, frameworks, plugins, and custom code. It then outlines some of the problems that arise from having many script tags, including increased complexity. The document proceeds to explain how RequireJS uses an Asynchronous Module Definition (AMD) approach to define modules and their dependencies. It provides a code example of validating a mailing list signup form, breaking it into modules for jQuery, a validation plugin, and the main application script. Finally, it discusses how RequireJS can improve page load performance by loading scripts asynchronously on demand.

javascript
Zend Framework 1.8 Features Webinar
Zend Framework 1.8 Features WebinarZend Framework 1.8 Features Webinar
Zend Framework 1.8 Features Webinar

The document discusses new features in Zend Framework 1.8, including Zend_Tool for RAD development, Zend_Application for standardized bootstrapping, Zend_Navigation for building navigation structures, and Zend_Service components for Amazon EC2 and S3 cloud services.

zend_tool1.8zend_navigation
Spring MVC framework
Spring MVC frameworkSpring MVC framework
Spring MVC framework

A consolidated presentation covering following topics:-Framework,OOPS Concepts,Spring,JSP & Servlets,Loggers,ANT Tool,Web Services

Modular Test-driven SPAs with Spring and AngularJS
FROM BACKBONE TO ANGULAR 
Too many moving parts, choices 
Boilerplate Code 
Marionette, Backbone.ModelBinder, Backbone.Relational
ALTERNATIVES
ANGULAR JS BASICS 
Model 
View (Templates) 
Controller 
Expressions 
Directives 
Modules 
See also: AngularJS Concepts

Recommended for you

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

Use Spring Boot! No, use Micronaut!! Nooooo, Quarkus is the best!!! There's a lot of developers praising the hottest, and fastest, Java REST frameworks: Micronaut, Quarkus, and Spring Boot. In this session, you'll learn how to do the following with each framework: ✅ Build a REST API ✅ Secure your API with OAuth 2.0 ✅ Optimize for production with Docker and GraalVM I'll also share some performance numbers and pretty graphs to compare community metrics. Related blog post: https://developer.okta.com/blog/2021/06/18/native-java-framework-comparison

javascriptrestapisecurity
Vue, vue router, vuex
Vue, vue router, vuexVue, vue router, vuex
Vue, vue router, vuex

Vue is a progressive JavaScript framework that can be used to build user interfaces. It is designed to be incrementally adoptable, with a small core library focused on the view layer. Components are custom elements that extend HTML and attach Vue behavior. Single file components allow cleaner code through preprocessing. VueRouter provides routing functionality for single page applications. Vuex is a state management pattern and library that serves as a centralized store for component data and enforces predictable state mutations.

vuexvue routersingle page application
Spring boot jpa
Spring boot jpaSpring boot jpa
Spring boot jpa

The document discusses Spring Boot, a framework for creating stand-alone, production-grade Spring based applications. It describes how Spring Boot allows creating projects quickly with features like embedded servers and auto-configuration. It then covers how to develop a basic Spring Boot web application including creating the project structure with Maven, adding controllers and properties files, and connecting to databases using Spring Data. Overall, the document provides an overview of Spring Boot and guidance on starting a Spring Boot web application project.

spring bootjpaspring jdbc
¡HOLA! 
<div ng-app ng-init="firstName='Angular';lastName='rocks'"> 
<div> 
First Name: <input type="text" ng-model="firstName"> 
</div> 
<div> 
Last Name: <input type="text" ng-model="lastName"> 
</div> 
<div> 
<b>Complete Name:</b> {{firstName + ' ' + lastName | uppercase}} 
</div> 
</div> 
Demo
MODEL 1/2 
Angular is very flexible about your model 
Ultimately expressed via the $scope 
$scope = Glue between Controller and View 
$scope mimics DOM (Hierarchical, one $rootScope) 
$watch, $apply
MODEL 2/2 
Killer Feature: Data-Binding 
Model === single-source-of-truth 
View reflects model changes automatically
VIEW 
HTML is your templating Engine 
Minimize logic as much as possible 
Consider Custom Directives

Recommended for you

AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started

In this presentation, you will find everything need to get started with AngularJS. For more details, have a look at my blog (http://stephanebegaudeau.tumblr.com) or follow me on twitter (@sbegaudeau)

angularangularjsjavascript
Spring Mvc Rest
Spring Mvc RestSpring Mvc Rest
Spring Mvc Rest

The document discusses building RESTful applications with Spring MVC. It covers the pillars of REST including resources, URIs, HTTP methods, and representations. It provides examples of modeling resources as controllers and mapping HTTP methods to controller actions. It also discusses content negotiation, supporting different data representations like JSON, XML and RSS using Spring views.

Java EE vs Spring Framework
Java  EE vs Spring Framework Java  EE vs Spring Framework
Java EE vs Spring Framework

This session compares the Spring and Java EE stacks in terms of Web frameworks. It re-examines the motivations behind the Spring framework and explores the emergence of the Java EE programming model to meet the challenges posed. The presentation provides insight into when Spring and/or Java EE is appropriate for a building Web applications and if they can coexist.

spring java ee
CONTROLLER 
Used to "setup" your $scope 
Add behavior to your $scope 
Don't do UI work using controllers!! 
Use directives and filters instead
¡HOLA! V2.0 - VIEW 
<div ng-app="hola" ng-controller="NameController"> 
<div> 
First Name: <input type="text" ng-model="firstName"> 
</div> 
<div> 
Last Name: <input type="text" ng-model="lastName"> 
</div> 
<div> 
<b>Complete Name:</b> {{firstName + ' ' + lastName | uppercase}} 
</div> 
</div> 
Demo
¡HOLA! V2.0 - CONTROLLER 
<script> 
(function(){ 
var app = angular.module('hola', []); 
app.controller('NameController', function($scope){ 
$scope.firstName='Angular'; 
$scope.lastName='rocks'; 
}); 
})(); 
</script> 
Demo
DEPENDENCY INJECTION 
Consider using array notation 
app.controller('NameCtrl', function($scope){ ... }); 
app.controller('NameCtrl', ['$scope', function($scope){ ... }]); 
Or use ngmin 
grunt-ngmin, gulp-ngmin

Recommended for you

Angular js vs. Facebook react
Angular js vs. Facebook reactAngular js vs. Facebook react
Angular js vs. Facebook react

The document compares the JavaScript frameworks AngularJS and Facebook React. It provides an overview of key differences between the frameworks, including how they handle data binding, routing, and component architecture. It also includes code examples for basic "Hello World" components in each framework and a TODO list application. The document concludes with recommendations for tutorials and documentation resources for learning more about AngularJS and React.

facebook reactangular js.frontend
AngularJS - TechTalk 3/2/2014
AngularJS - TechTalk 3/2/2014AngularJS - TechTalk 3/2/2014
AngularJS - TechTalk 3/2/2014

AngularJS seems initially complex with many new concepts and terms. It is designed for single page applications and has a learning curve. AngularJS uses modules, dependency injection, MVC principles, scopes, directives, filters and services/factories/providers to build applications. Testing and reusable components are important. While challenging, AngularJS is a powerful tool for building dynamic web applications.

angularjsjavascript
Spring MVC 3.0 Framework
Spring MVC 3.0 FrameworkSpring MVC 3.0 Framework
Spring MVC 3.0 Framework

Spring MVC 3.0 Framework Objective: 1. Introduce Spring MVC Module 2. Learn about Spring MVC Components (Dispatcher, Handler mapping, Controller, View Resolver, View) Slides: 1. What Is Spring? 2. Why use Spring? 3. By the way, just what is MVC? 4. MVC Architecture 5. Spring MVC Architecture 7. Spring MVC Components 8. DispatcherServlet 9. DispatcherServlet Architecture......... .........................................................

spring frameworkspring mvc
EXPRESSIONS 
{{ expression }} 
No Control Flow Statements 
Can use filters inside expressions: 
{{ 'abcd' | uppercase }}
DIRECTIVES 
Are markers on a DOM element 
Attach behavior/transform DOM elements 
ng-controller, ng-app ...
TYPES OF DIRECTIVES 
Attribute (default) 
Element 
Class 
See: https://gist.github.com/CMCDragonkai/6282750
MODULES 
Bear with me ...

Recommended for you

webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)

This document provides an overview and introduction to web components. It discusses the key aspects of web components including custom elements, HTML imports, shadow DOM, and templates. It also shows how web components allow building reusable custom elements that encapsulate their styles and functionality independently of the page they are used in. The document demonstrates how to define and register a custom element for displaying activity cards and use templates and shadow DOM to encapsulate its implementation.

htmlwebwebcomponents
How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0

The presentation slide for Vue.js meetup http://abeja-innovation-meetup.connpass.com/event/38214/ That contains mainly about SSR (Server side rendering) + SPA with isomorphic fetch and client hydration

vue.js
WebGUI Developers Workshop
WebGUI Developers WorkshopWebGUI Developers Workshop
WebGUI Developers Workshop

The document provides instructions for installing and testing a WebGUI developer workshop that demonstrates how to create macros, content handlers, and utilize other WebGUI plugins like URL handlers and assets, allowing developers to extend WebGUI's functionality and build custom applications. It outlines steps for installing the workshop files, accessing the virtual machine, and includes examples of simple "Hello World" macros and content handlers to get started with WebGUI development.

yapceu2009developerlisbon
BUILD AND DEPLOYMENT
STRATEGIES - JAVA TOOLING 
Wro4j 
Jawr 
Spring 4.1 (SPR-10310, SPR-10933) 
See 
Blog Post 
WebJars
STRATEGIES - JAVASCRIPT TOOLING 
Node (Npm) 
Grunt (Gulp) 
Bower 
Yeoman (angular-seed)
MAKE MAVEN AND GRADLE GRUNT 
Plugins exist for Gradle and Maven 
Spring XD uses Gradle integration 
botanic-ng uses Maven integration 
Spring Boot plus Maven Frontend Plugin

Recommended for you

Andy Bosch - JavaServer Faces in the cloud
Andy Bosch -  JavaServer Faces in the cloudAndy Bosch -  JavaServer Faces in the cloud
Andy Bosch - JavaServer Faces in the cloud

The document discusses using JavaServer Faces (JSF) 2.x web applications on Google App Engine (GAE). It begins with an introduction to GAE and provides steps for a "HelloWorld" application. It then covers key aspects of JSF 2.0 and considerations for using it with GAE, such as workarounds for known issues. The document demonstrates some JSF 2.0 features like composite components and Ajax. It also discusses component libraries that can be used with GAE and JSF, such as PrimeFaces. In conclusion, it provides resources for further information.

jsf cloud gae google app engine
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit

Google Web Toolkit Presentation by Assoc.Prof. Dr.Thanachart Numnonda &amp; Asst.Prof. Thanisa Kruawaisayawan, Mini Master of Java Technology KMITL, July 2012

Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit

Google Web Toolkit (GWT) is an open source Java framework that allows web developers to create Ajax applications in Java and deploy them as optimized JavaScript. GWT provides tools for building AJAX applications in Java that are compiled into JavaScript for cross-browser compatibility. It handles browser inconsistencies and integrates with existing Java development tools, allowing developers to build and debug Rich Internet Applications using Java instead of JavaScript.

java web programminggoogle app enginecloud computing
INTEGRATION WITH 
SPRING (BOOT)
HELLO WORLD FITS INTO TWEET 
@Controller 
class ThisWillActuallyRun { 
@RequestMapping("/") 
@ResponseBody 
String home() { 
"Hello World!" 
} 
}
RAPID PROTOTYPING 
Spring Scripts ( Samples 
) 
Starter POMs 
Über-Jars support (can create WARs also) 
Maven + Gradle Plugins 
AutoConfiguration support
MAIN IS BACK 
@EnableAutoConfiguration @ComponentScan @EnableScheduling 
public class MainApp extends RepositoryRestMvcConfiguration { 
@Override 
protected void configureRepositoryRestConfiguration( 
RepositoryRestConfiguration config) { 
config.exposeIdsFor(Image. class, Garden.class, Plant.class); 
config.setBaseUri(URI.create("/api")); 
} 
public static void main(String[] args) { 
final ConfigurableApplicationContext context = 
SpringApplication.run(MainApp. class, args); 
... 
} 
@Bean 
MultipartConfigElement multipartConfigElement() { ... } ... 
}

Recommended for you

09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)

09 - Express Nodes on the right Angle - Vitaliy Basyuk - IT Event 2013 (5) 60 вузлів під правильним кутом - миттєва розробка програмних додатків використовуючи Node.js + Express + MongoDB + AngularJS. Коли ми беремось за новий продукт, передусім ми думаємо про пристрасть, яка необхідна йому, щоб зробити користувача задоволеним і відданим нашому баченню. А що допомагає нам здобути прихильність користувачів? Очевидно, що окрім самої ідеї, також важлими будуть: зручний користувацький інтерфейс, взаємодія в реальному часі та прозора робота з даними. Ці три властивості ми можемо здобути використовучи ті чи інші засоби, проте, коли все лиш починається, набагато зручніше, якщо інструменти допомагають втілити бажане, а не відволікають від головної мети. Ми розглянемо процес розробки, використовуючи Node.js, Express, MongoDB та AngularJS як найбільш корисного поєднання для отримання вагомої переваги вже на старті вашого продукту. Віталій Басюк http://itevent.if.ua/lecture/express-nodes-right-angle-rapid-application-development-using-nodejs-express-mongodb-angular

AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep Dive

Learn the best practices and advanced techniques. * Passing data to client libs, use the data attribute * Expression contexts, choose wisely * Use statement best practices, what fits best your needs * Template & Call statements advanced usage * Parameters for sub-resources, featuring resource attributes and synthetic resources

aem 6.2adobe experience managersightly
Zend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_ToolZend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_Tool

Presentation for azPHP on setting up a new project using Zend_Tool. Also goes over creating basic modules, controllers, actions, models and layouts. All code in the presentation has not necessarily been tested. Will update presentation when done.

SERVING STATIC CONTENT 
/META-INF/resources/ 
/resources/ 
/static/ 
/public/ 
Also supports WebJars
MAKE BOOT MODULES (UI) PLUGGABLE
DEMO BACKEND
MODULARIZATION

Recommended for you

Exploring Symfony's Code
Exploring Symfony's CodeExploring Symfony's Code
Exploring Symfony's Code

The document provides an overview of the MVC pattern and how it is implemented in Symfony. It discusses how Symfony separates code into models, views, and controllers and layers these components. It also describes common Symfony structures like modules, actions, and templates as well as tools like parameter holders, constants, and autoloading that are frequently used.

symfony
Working with AngularJS
Working with AngularJSWorking with AngularJS
Working with AngularJS

Introductory session about AngularJS, delivered on May 20th 2014 at Microsoft Web Camp, in Lisbon, Portugal.

javascriptweb developmentangularjs
Deploying applications to Cloud with Google App Engine
Deploying applications to Cloud with Google App EngineDeploying applications to Cloud with Google App Engine
Deploying applications to Cloud with Google App Engine

This document discusses deploying applications to Google App Engine. It provides an overview of Google App Engine, reasons to use it including scalability and integration with Google services. It then outlines the development process including project structure, local development server, and deployment. It also covers data storage options, limitations of the platform, and features not supported.

javagoogle app enginecloud
MODULARIZATION NOW 
AngularJS Modules 
RequireJS
ANGULARJS MODULES 
https://docs.angularjs.org/guide/module 
Compartmentalize sections of your application 
Does not deal with script loading 
angular.module('myModule', []). 
config(function(injectables) { // provider-injector 
// This is an example of config block. 
}). 
run(function(injectables) { // instance-injector 
// Like a Main method 
});
REQUIREJS 
RequireJS 
JavaScript file and module loader 
RequireJS Optimizer
MODULARIZATION FUTURE 
ECMAScript 6 modules 
is being AngularJS 2 written in ES6 
Web Components

Recommended for you

WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...

This document provides an overview of designing complex applications using HTML5 and KnockoutJS. It discusses HTML5 and why it is useful, introduces JavaScript and frameworks like KnockoutJS and SammyJS that help manage complexity. It also summarizes several JavaScript libraries and patterns including the module pattern, revealing module pattern, and MV* patterns. Specific libraries and frameworks discussed include RequireJS, AmplifyJS, UnderscoreJS, and LINQ.js. The document concludes with a brief mention of server-side tools like ScriptSharp.

sammyjshtml5javascript
Spring Boot
Spring BootSpring Boot
Spring Boot

Spring Boot is a framework for creating stand-alone, production-grade Spring based applications that can be "just run". It aims to provide a radically faster and widely accessible starting experience for developing Spring applications. Spring Boot applications can be started using java -jar or traditional WAR deployments and require very little Spring configuration. The document then discusses system requirements, development environment, creating a simple Hello World application, using Spring Boot Admin to monitor applications, configuring databases, Spring Data JPA, REST controllers, caching with EhCache, building web applications with Thymeleaf, and project structure.

spring bootspring
Resthub lyonjug
Resthub lyonjugResthub lyonjug
Resthub lyonjug

This document discusses RESThub, a full stack Java and JavaScript framework. It provides a plugin-based architecture using Spring and Maven. The Java stack includes generic DAO, service, and test classes along with JPA and validation. The JavaScript stack supports routing, classes, controllers, templates, widgets, and repositories to enable building rich client applications with a REST backend. Examples and roadmaps are also mentioned.

html5springresthub
MORE COOLNESS
FILTERS 
... 
<tr ng-repeat= 
"item in jobDefinitions | filter:filterQuery | orderBy:'name'"> 
...
FILE UPLOAD 
angular-file-upload (nervgh) 
angular-file-upload (danialfarid) 
File Reader 
Traditional Post
ROUTING 
ngRoute (built-in) 
Routing on steroids using ui-router

Recommended for you

The Google App Engine Oil Framework
The Google App Engine Oil FrameworkThe Google App Engine Oil Framework
The Google App Engine Oil Framework

The document discusses the Google App Engine Oil (GAEO) framework, which aims to provide a structured and parameterized approach to developing applications on Google App Engine. GAEO version 0.1 was released in September 2008 and introduced features like URL routing, action controllers, session support, and model enhancements. Version 0.2 added additional features like plugins and AJAX/form helpers. The document outlines GAEO's software architecture and code layout, and describes its current features and future roadmap. It provides links to documentation and forums for further information.

frameworkappengine
EVOLVE'14 | Enhance | Gabriel Walt | Sightly Component Development
EVOLVE'14 | Enhance | Gabriel Walt | Sightly Component DevelopmentEVOLVE'14 | Enhance | Gabriel Walt | Sightly Component Development
EVOLVE'14 | Enhance | Gabriel Walt | Sightly Component Development

Presented at 3|SHARE's EVOLVE'14 - The Adobe Experience Manager Community Summit on Tuesday November 18th, 2014 at the Hard Rock Hotel in San Diego, CA. evolve14.com

aem3shareadobe
Google app engine by example
Google app engine by exampleGoogle app engine by example
Google app engine by example

A guide to create a simple Java application and upload it to the Google Cloud Platform with Google App Engine. This presentation covers usage of persistence API with both Google Cloud SQL and Google Cloud Datastore.

jpagoogle app enginejava
ROUTING USING UI-ROUTER 
state machine 
nested views 
Spring XD's routes.js
TESTING 
E2E testing with Protractor 
Unit Testing using Karma and Jasmine
UI CONSIDERATIONS 
Bootstrap 
Keep your CSS maintainable with Less and Sass
RESOURCES

Recommended for you

Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)

This document provides an overview of Spring Boot, a framework for creating stand-alone, production-grade Spring based applications. It discusses how Spring Boot aims to make it easy to create Spring applications with default configurations and minimal code. The key topics covered include: using Maven and Gradle build tools with Spring Boot, common features and conventions like auto-configuration and main application classes, Spring Data and JPA for database access, Spring MVC features for web applications, and testing Spring applications.

Java 6 [Mustang] - Features and Enchantments
Java 6 [Mustang] - Features and Enchantments Java 6 [Mustang] - Features and Enchantments
Java 6 [Mustang] - Features and Enchantments

The document discusses the new features of Java SE 6 including enhancements to web services, scripting, databases, desktop integration, monitoring and management, compiler access, pluggable annotations, desktop deployment, security, and performance. It provides code examples and explanations for many of the new features.

java mustang features example tutorial
Os Haase
Os HaaseOs Haase
Os Haase

This document provides an overview of the Swing Application Framework and Beans Binding frameworks being developed as part of JSR 296 and JSR 295. It discusses the motivations for creating standard frameworks to simplify Swing development, outlines the key goals and components of the Swing Application Framework, and briefly introduces Beans Binding for keeping object properties in sync. The frameworks are aimed at addressing common issues for typical Swing applications and are intended for the Java SE 7 platform.

Modular Test-driven SPAs with Spring and AngularJS
Modular Test-driven SPAs with Spring and AngularJS
THANK YOU!! 
Source Code + Preso: 
https://github.com/ghillert/botanic-ng

More Related Content

What's hot

Angular beans
Angular beansAngular beans
Angular beans
Bessem Hmidi
 
Overview of the AngularJS framework
Overview of the AngularJS framework Overview of the AngularJS framework
Overview of the AngularJS framework
Yakov Fain
 
Spring Boot and Microservices
Spring Boot and MicroservicesSpring Boot and Microservices
Spring Boot and Microservices
seges
 
Spring boot
Spring bootSpring boot
Spring boot
Bhagwat Kumar
 
introduction to Vue.js 3
introduction to Vue.js 3 introduction to Vue.js 3
introduction to Vue.js 3
ArezooKmn
 
Web sockets in Angular
Web sockets in AngularWeb sockets in Angular
Web sockets in Angular
Yakov Fain
 
Managing JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJSManaging JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJS
Den Odell
 
Zend Framework 1.8 Features Webinar
Zend Framework 1.8 Features WebinarZend Framework 1.8 Features Webinar
Zend Framework 1.8 Features Webinar
Ralph Schindler
 
Spring MVC framework
Spring MVC frameworkSpring MVC framework
Spring MVC framework
Mohit Gupta
 
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
Matt Raible
 
Vue, vue router, vuex
Vue, vue router, vuexVue, vue router, vuex
Vue, vue router, vuex
Samundra khatri
 
Spring boot jpa
Spring boot jpaSpring boot jpa
Spring boot jpa
Hamid Ghorbani
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
Stéphane Bégaudeau
 
Spring Mvc Rest
Spring Mvc RestSpring Mvc Rest
Spring Mvc Rest
Craig Walls
 
Java EE vs Spring Framework
Java  EE vs Spring Framework Java  EE vs Spring Framework
Java EE vs Spring Framework
Rohit Kelapure
 
Angular js vs. Facebook react
Angular js vs. Facebook reactAngular js vs. Facebook react
Angular js vs. Facebook react
Keyup
 
AngularJS - TechTalk 3/2/2014
AngularJS - TechTalk 3/2/2014AngularJS - TechTalk 3/2/2014
AngularJS - TechTalk 3/2/2014
Spyros Ioakeimidis
 
Spring MVC 3.0 Framework
Spring MVC 3.0 FrameworkSpring MVC 3.0 Framework
webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)
Hendrik Ebbers
 
How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0
Takuya Tejima
 

What's hot (20)

Angular beans
Angular beansAngular beans
Angular beans
 
Overview of the AngularJS framework
Overview of the AngularJS framework Overview of the AngularJS framework
Overview of the AngularJS framework
 
Spring Boot and Microservices
Spring Boot and MicroservicesSpring Boot and Microservices
Spring Boot and Microservices
 
Spring boot
Spring bootSpring boot
Spring boot
 
introduction to Vue.js 3
introduction to Vue.js 3 introduction to Vue.js 3
introduction to Vue.js 3
 
Web sockets in Angular
Web sockets in AngularWeb sockets in Angular
Web sockets in Angular
 
Managing JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJSManaging JavaScript Dependencies With RequireJS
Managing JavaScript Dependencies With RequireJS
 
Zend Framework 1.8 Features Webinar
Zend Framework 1.8 Features WebinarZend Framework 1.8 Features Webinar
Zend Framework 1.8 Features Webinar
 
Spring MVC framework
Spring MVC frameworkSpring MVC framework
Spring MVC framework
 
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
 
Vue, vue router, vuex
Vue, vue router, vuexVue, vue router, vuex
Vue, vue router, vuex
 
Spring boot jpa
Spring boot jpaSpring boot jpa
Spring boot jpa
 
AngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get startedAngularJS 101 - Everything you need to know to get started
AngularJS 101 - Everything you need to know to get started
 
Spring Mvc Rest
Spring Mvc RestSpring Mvc Rest
Spring Mvc Rest
 
Java EE vs Spring Framework
Java  EE vs Spring Framework Java  EE vs Spring Framework
Java EE vs Spring Framework
 
Angular js vs. Facebook react
Angular js vs. Facebook reactAngular js vs. Facebook react
Angular js vs. Facebook react
 
AngularJS - TechTalk 3/2/2014
AngularJS - TechTalk 3/2/2014AngularJS - TechTalk 3/2/2014
AngularJS - TechTalk 3/2/2014
 
Spring MVC 3.0 Framework
Spring MVC 3.0 FrameworkSpring MVC 3.0 Framework
Spring MVC 3.0 Framework
 
webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)
 
How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0
 

Similar to Modular Test-driven SPAs with Spring and AngularJS

WebGUI Developers Workshop
WebGUI Developers WorkshopWebGUI Developers Workshop
WebGUI Developers Workshop
Plain Black Corporation
 
Andy Bosch - JavaServer Faces in the cloud
Andy Bosch -  JavaServer Faces in the cloudAndy Bosch -  JavaServer Faces in the cloud
Andy Bosch - JavaServer Faces in the cloud
Andy Bosch
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
Software Park Thailand
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
IMC Institute
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
Igor Bronovskyy
 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep Dive
Gabriel Walt
 
Zend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_ToolZend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_Tool
Gordon Forsythe
 
Exploring Symfony's Code
Exploring Symfony's CodeExploring Symfony's Code
Exploring Symfony's Code
Wildan Maulana
 
Working with AngularJS
Working with AngularJSWorking with AngularJS
Working with AngularJS
André Vala
 
Deploying applications to Cloud with Google App Engine
Deploying applications to Cloud with Google App EngineDeploying applications to Cloud with Google App Engine
Deploying applications to Cloud with Google App Engine
Alexander Zamkovyi
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
Fabio Franzini
 
Spring Boot
Spring BootSpring Boot
Spring Boot
HongSeong Jeon
 
Resthub lyonjug
Resthub lyonjugResthub lyonjug
Resthub lyonjug
Sébastien Deleuze
 
The Google App Engine Oil Framework
The Google App Engine Oil FrameworkThe Google App Engine Oil Framework
The Google App Engine Oil Framework
Eric ShangKuan
 
EVOLVE'14 | Enhance | Gabriel Walt | Sightly Component Development
EVOLVE'14 | Enhance | Gabriel Walt | Sightly Component DevelopmentEVOLVE'14 | Enhance | Gabriel Walt | Sightly Component Development
EVOLVE'14 | Enhance | Gabriel Walt | Sightly Component Development
Evolve The Adobe Digital Marketing Community
 
Google app engine by example
Google app engine by exampleGoogle app engine by example
Google app engine by example
Alexander Zamkovyi
 
Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)
Gunith Devasurendra
 
Java 6 [Mustang] - Features and Enchantments
Java 6 [Mustang] - Features and Enchantments Java 6 [Mustang] - Features and Enchantments
Java 6 [Mustang] - Features and Enchantments
Pavel Kaminsky
 
Os Haase
Os HaaseOs Haase
Os Haase
oscon2007
 
Quick and Easy Development with Node.js and Couchbase Server
Quick and Easy Development with Node.js and Couchbase ServerQuick and Easy Development with Node.js and Couchbase Server
Quick and Easy Development with Node.js and Couchbase Server
Nic Raboy
 

Similar to Modular Test-driven SPAs with Spring and AngularJS (20)

WebGUI Developers Workshop
WebGUI Developers WorkshopWebGUI Developers Workshop
WebGUI Developers Workshop
 
Andy Bosch - JavaServer Faces in the cloud
Andy Bosch -  JavaServer Faces in the cloudAndy Bosch -  JavaServer Faces in the cloud
Andy Bosch - JavaServer Faces in the cloud
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
 
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
09 - express nodes on the right angle - vitaliy basyuk - it event 2013 (5)
 
AEM Sightly Deep Dive
AEM Sightly Deep DiveAEM Sightly Deep Dive
AEM Sightly Deep Dive
 
Zend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_ToolZend Framework 1.9 Setup & Using Zend_Tool
Zend Framework 1.9 Setup & Using Zend_Tool
 
Exploring Symfony's Code
Exploring Symfony's CodeExploring Symfony's Code
Exploring Symfony's Code
 
Working with AngularJS
Working with AngularJSWorking with AngularJS
Working with AngularJS
 
Deploying applications to Cloud with Google App Engine
Deploying applications to Cloud with Google App EngineDeploying applications to Cloud with Google App Engine
Deploying applications to Cloud with Google App Engine
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Resthub lyonjug
Resthub lyonjugResthub lyonjug
Resthub lyonjug
 
The Google App Engine Oil Framework
The Google App Engine Oil FrameworkThe Google App Engine Oil Framework
The Google App Engine Oil Framework
 
EVOLVE'14 | Enhance | Gabriel Walt | Sightly Component Development
EVOLVE'14 | Enhance | Gabriel Walt | Sightly Component DevelopmentEVOLVE'14 | Enhance | Gabriel Walt | Sightly Component Development
EVOLVE'14 | Enhance | Gabriel Walt | Sightly Component Development
 
Google app engine by example
Google app engine by exampleGoogle app engine by example
Google app engine by example
 
Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)Rediscovering Spring with Spring Boot(1)
Rediscovering Spring with Spring Boot(1)
 
Java 6 [Mustang] - Features and Enchantments
Java 6 [Mustang] - Features and Enchantments Java 6 [Mustang] - Features and Enchantments
Java 6 [Mustang] - Features and Enchantments
 
Os Haase
Os HaaseOs Haase
Os Haase
 
Quick and Easy Development with Node.js and Couchbase Server
Quick and Easy Development with Node.js and Couchbase ServerQuick and Easy Development with Node.js and Couchbase Server
Quick and Easy Development with Node.js and Couchbase Server
 

More from Gunnar Hillert

High Precision GPS Positioning for Spring Developers
High Precision GPS Positioning for Spring DevelopersHigh Precision GPS Positioning for Spring Developers
High Precision GPS Positioning for Spring Developers
Gunnar Hillert
 
Migrating to Angular 5 for Spring Developers
Migrating to Angular 5 for Spring DevelopersMigrating to Angular 5 for Spring Developers
Migrating to Angular 5 for Spring Developers
Gunnar Hillert
 
s2gx2015 who needs batch
s2gx2015 who needs batchs2gx2015 who needs batch
s2gx2015 who needs batch
Gunnar Hillert
 
Spring Batch Performance Tuning
Spring Batch Performance TuningSpring Batch Performance Tuning
Spring Batch Performance Tuning
Gunnar Hillert
 
Creating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJSCreating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJS
Gunnar Hillert
 
Atlanta JUG - Integrating Spring Batch and Spring Integration
Atlanta JUG - Integrating Spring Batch and Spring IntegrationAtlanta JUG - Integrating Spring Batch and Spring Integration
Atlanta JUG - Integrating Spring Batch and Spring Integration
Gunnar Hillert
 
DevNexus 2013 - Introduction to WebSockets
DevNexus 2013 - Introduction to WebSocketsDevNexus 2013 - Introduction to WebSockets
DevNexus 2013 - Introduction to WebSockets
Gunnar Hillert
 
Introduction to WebSockets
Introduction to WebSocketsIntroduction to WebSockets
Introduction to WebSockets
Gunnar Hillert
 
S2GX 2012 - What's New in Spring Integration
S2GX 2012 - What's New in Spring IntegrationS2GX 2012 - What's New in Spring Integration
S2GX 2012 - What's New in Spring Integration
Gunnar Hillert
 
S2GX 2012 - Introduction to Spring Integration and Spring Batch
S2GX 2012 - Introduction to Spring Integration and Spring BatchS2GX 2012 - Introduction to Spring Integration and Spring Batch
S2GX 2012 - Introduction to Spring Integration and Spring Batch
Gunnar Hillert
 
Cloud Foundry for Spring Developers
Cloud Foundry for Spring DevelopersCloud Foundry for Spring Developers
Cloud Foundry for Spring Developers
Gunnar Hillert
 
jRecruiter - The AJUG Job Posting Service
jRecruiter - The AJUG Job Posting ServicejRecruiter - The AJUG Job Posting Service
jRecruiter - The AJUG Job Posting Service
Gunnar Hillert
 

More from Gunnar Hillert (12)

High Precision GPS Positioning for Spring Developers
High Precision GPS Positioning for Spring DevelopersHigh Precision GPS Positioning for Spring Developers
High Precision GPS Positioning for Spring Developers
 
Migrating to Angular 5 for Spring Developers
Migrating to Angular 5 for Spring DevelopersMigrating to Angular 5 for Spring Developers
Migrating to Angular 5 for Spring Developers
 
s2gx2015 who needs batch
s2gx2015 who needs batchs2gx2015 who needs batch
s2gx2015 who needs batch
 
Spring Batch Performance Tuning
Spring Batch Performance TuningSpring Batch Performance Tuning
Spring Batch Performance Tuning
 
Creating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJSCreating Modular Test-Driven SPAs with Spring and AngularJS
Creating Modular Test-Driven SPAs with Spring and AngularJS
 
Atlanta JUG - Integrating Spring Batch and Spring Integration
Atlanta JUG - Integrating Spring Batch and Spring IntegrationAtlanta JUG - Integrating Spring Batch and Spring Integration
Atlanta JUG - Integrating Spring Batch and Spring Integration
 
DevNexus 2013 - Introduction to WebSockets
DevNexus 2013 - Introduction to WebSocketsDevNexus 2013 - Introduction to WebSockets
DevNexus 2013 - Introduction to WebSockets
 
Introduction to WebSockets
Introduction to WebSocketsIntroduction to WebSockets
Introduction to WebSockets
 
S2GX 2012 - What's New in Spring Integration
S2GX 2012 - What's New in Spring IntegrationS2GX 2012 - What's New in Spring Integration
S2GX 2012 - What's New in Spring Integration
 
S2GX 2012 - Introduction to Spring Integration and Spring Batch
S2GX 2012 - Introduction to Spring Integration and Spring BatchS2GX 2012 - Introduction to Spring Integration and Spring Batch
S2GX 2012 - Introduction to Spring Integration and Spring Batch
 
Cloud Foundry for Spring Developers
Cloud Foundry for Spring DevelopersCloud Foundry for Spring Developers
Cloud Foundry for Spring Developers
 
jRecruiter - The AJUG Job Posting Service
jRecruiter - The AJUG Job Posting ServicejRecruiter - The AJUG Job Posting Service
jRecruiter - The AJUG Job Posting Service
 

Recently uploaded

find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
huseindihon
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
Matthew Sinclair
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
Mark Billinghurst
 
Measuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at TwitterMeasuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at Twitter
ScyllaDB
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
Andrey Yasko
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
Emerging Tech
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
Larry Smarr
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
Sally Laouacheria
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
Eric D. Schabell
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
Tatiana Al-Chueyr
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
Larry Smarr
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
Bert Blevins
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
Adam Dunkels
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
ArgaBisma
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
Matthew Sinclair
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
Aurora Consulting
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
Matthew Sinclair
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
SynapseIndia
 
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdfPigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions
 

Recently uploaded (20)

find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
 
Measuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at TwitterMeasuring the Impact of Network Latency at Twitter
Measuring the Impact of Network Latency at Twitter
 
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-InTrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
TrustArc Webinar - 2024 Data Privacy Trends: A Mid-Year Check-In
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
 
Implementations of Fused Deposition Modeling in real world
Implementations of Fused Deposition Modeling  in real worldImplementations of Fused Deposition Modeling  in real world
Implementations of Fused Deposition Modeling in real world
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
 
Best Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdfBest Practices for Effectively Running dbt in Airflow.pdf
Best Practices for Effectively Running dbt in Airflow.pdf
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
 
How to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptxHow to Build a Profitable IoT Product.pptx
How to Build a Profitable IoT Product.pptx
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
 
20240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 202420240705 QFM024 Irresponsible AI Reading List June 2024
20240705 QFM024 Irresponsible AI Reading List June 2024
 
Quality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of TimeQuality Patents: Patents That Stand the Test of Time
Quality Patents: Patents That Stand the Test of Time
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
 
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdfPigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdf
 

Modular Test-driven SPAs with Spring and AngularJS

  • 1. CREATING MODULAR TEST DRIVEN SPAS WITH SPRING AND ANGULAR JS Created by Gunnar Hillert / @ghillert
  • 2. GOALS AngularJS Overview Build and Deployment Integration with Spring Testing Modularization UI Considerations
  • 3. ME (Java) Web developer since 2005 Struts 1+2, Spring MVC, GWT, Flex Spring Integration + XD committer AngularJS since Jan 2014
  • 4. AUDIENCE - WHAT DO YOU USE? AngularJS? 50% Backbone? 20% JQuery? 90% Are you using any other SPA Framework? ExtJS Spring MVC? 60% Spring Boot? 10%
  • 5. WHAT ARE SPAS? A single-page application (SPA), also known as single-page interface (SPI), is a web application or web site that fits on a single web page with the goal of providing a more fluid user experience akin to a desktop application. Wikipedia
  • 7. JAVASCRIPT WTF 1/2 http://wtfjs.com/ parseInt('crap'); // NaN parseInt('crap', 16); // 12 NaN 12
  • 8. JAVASCRIPT WTF 2/2 http://wtfjs.com/ (2 + "3"); // 23 (2 + +"3"); // 5 (+""); // 0 23 5 0
  • 10. FROM BACKBONE TO ANGULAR Too many moving parts, choices Boilerplate Code Marionette, Backbone.ModelBinder, Backbone.Relational
  • 12. ANGULAR JS BASICS Model View (Templates) Controller Expressions Directives Modules See also: AngularJS Concepts
  • 13. ¡HOLA! <div ng-app ng-init="firstName='Angular';lastName='rocks'"> <div> First Name: <input type="text" ng-model="firstName"> </div> <div> Last Name: <input type="text" ng-model="lastName"> </div> <div> <b>Complete Name:</b> {{firstName + ' ' + lastName | uppercase}} </div> </div> Demo
  • 14. MODEL 1/2 Angular is very flexible about your model Ultimately expressed via the $scope $scope = Glue between Controller and View $scope mimics DOM (Hierarchical, one $rootScope) $watch, $apply
  • 15. MODEL 2/2 Killer Feature: Data-Binding Model === single-source-of-truth View reflects model changes automatically
  • 16. VIEW HTML is your templating Engine Minimize logic as much as possible Consider Custom Directives
  • 17. CONTROLLER Used to "setup" your $scope Add behavior to your $scope Don't do UI work using controllers!! Use directives and filters instead
  • 18. ¡HOLA! V2.0 - VIEW <div ng-app="hola" ng-controller="NameController"> <div> First Name: <input type="text" ng-model="firstName"> </div> <div> Last Name: <input type="text" ng-model="lastName"> </div> <div> <b>Complete Name:</b> {{firstName + ' ' + lastName | uppercase}} </div> </div> Demo
  • 19. ¡HOLA! V2.0 - CONTROLLER <script> (function(){ var app = angular.module('hola', []); app.controller('NameController', function($scope){ $scope.firstName='Angular'; $scope.lastName='rocks'; }); })(); </script> Demo
  • 20. DEPENDENCY INJECTION Consider using array notation app.controller('NameCtrl', function($scope){ ... }); app.controller('NameCtrl', ['$scope', function($scope){ ... }]); Or use ngmin grunt-ngmin, gulp-ngmin
  • 21. EXPRESSIONS {{ expression }} No Control Flow Statements Can use filters inside expressions: {{ 'abcd' | uppercase }}
  • 22. DIRECTIVES Are markers on a DOM element Attach behavior/transform DOM elements ng-controller, ng-app ...
  • 23. TYPES OF DIRECTIVES Attribute (default) Element Class See: https://gist.github.com/CMCDragonkai/6282750
  • 26. STRATEGIES - JAVA TOOLING Wro4j Jawr Spring 4.1 (SPR-10310, SPR-10933) See Blog Post WebJars
  • 27. STRATEGIES - JAVASCRIPT TOOLING Node (Npm) Grunt (Gulp) Bower Yeoman (angular-seed)
  • 28. MAKE MAVEN AND GRADLE GRUNT Plugins exist for Gradle and Maven Spring XD uses Gradle integration botanic-ng uses Maven integration Spring Boot plus Maven Frontend Plugin
  • 30. HELLO WORLD FITS INTO TWEET @Controller class ThisWillActuallyRun { @RequestMapping("/") @ResponseBody String home() { "Hello World!" } }
  • 31. RAPID PROTOTYPING Spring Scripts ( Samples ) Starter POMs Über-Jars support (can create WARs also) Maven + Gradle Plugins AutoConfiguration support
  • 32. MAIN IS BACK @EnableAutoConfiguration @ComponentScan @EnableScheduling public class MainApp extends RepositoryRestMvcConfiguration { @Override protected void configureRepositoryRestConfiguration( RepositoryRestConfiguration config) { config.exposeIdsFor(Image. class, Garden.class, Plant.class); config.setBaseUri(URI.create("/api")); } public static void main(String[] args) { final ConfigurableApplicationContext context = SpringApplication.run(MainApp. class, args); ... } @Bean MultipartConfigElement multipartConfigElement() { ... } ... }
  • 33. SERVING STATIC CONTENT /META-INF/resources/ /resources/ /static/ /public/ Also supports WebJars
  • 34. MAKE BOOT MODULES (UI) PLUGGABLE
  • 37. MODULARIZATION NOW AngularJS Modules RequireJS
  • 38. ANGULARJS MODULES https://docs.angularjs.org/guide/module Compartmentalize sections of your application Does not deal with script loading angular.module('myModule', []). config(function(injectables) { // provider-injector // This is an example of config block. }). run(function(injectables) { // instance-injector // Like a Main method });
  • 39. REQUIREJS RequireJS JavaScript file and module loader RequireJS Optimizer
  • 40. MODULARIZATION FUTURE ECMAScript 6 modules is being AngularJS 2 written in ES6 Web Components
  • 42. FILTERS ... <tr ng-repeat= "item in jobDefinitions | filter:filterQuery | orderBy:'name'"> ...
  • 43. FILE UPLOAD angular-file-upload (nervgh) angular-file-upload (danialfarid) File Reader Traditional Post
  • 44. ROUTING ngRoute (built-in) Routing on steroids using ui-router
  • 45. ROUTING USING UI-ROUTER state machine nested views Spring XD's routes.js
  • 46. TESTING E2E testing with Protractor Unit Testing using Karma and Jasmine
  • 47. UI CONSIDERATIONS Bootstrap Keep your CSS maintainable with Less and Sass
  • 51. THANK YOU!! Source Code + Preso: https://github.com/ghillert/botanic-ng