A guest lecture I presented to MSc Level Enterprise Systems Development students within the Department of Computing at the University of Surrey. This was a very similar presentation to the L2 lecture delivered the week earlier, but also included more advanced material.
JSF 2 Notes with coding examples topics include introduction , managed bean, jsf tags, navigation, jsf life cycle and phase listners,jsf validation and converters, i18n
JSF 2 Notes with coding examples topics include introduction , managed bean, jsf tags, navigation, jsf life cycle and phase listners,jsf validation and converters, i18n
Java Spring MVC Framework with AngularJS by Google and HTML5Tuna Tore
Course Description
#springframework, #spring, #udemy, #discount, #programming, #springmvc, spring, #udemycourse, #education
NEW udemy course related to the latest Java Spring MVC Framework 4 for developing WEB applications with popular and proven technologies such as AngularJS by Google and HTML5. (Lectures are divided in three main sections so you don't have to learn AngularJS Framework until you start the last section. The last section will teach you AngularJS by Google and the integration with Java Spring MVC Framework 4)
https://www.udemy.com/java-spring-mvc-framework-with-angularjs-by-google-and-html5
Moreover, this course is designed and created with the mindset of teaching you the latest web technologies in a short period of time with low training cost and high-quality content including real production quality code examples.
Therefore after attending this course, you will be ready to design and develop any commercial Java Spring MVC applications by learning the main principals, best practices, and most important concepts.
Furthermore, this is a fast track course and covers the most important concepts in AngularJS Framework, HTML5 and the latest Java Spring MVC Framework 4x with code examples and sample applications. You will be able to download source codes/slides/diagrams by attending this course and you can use those samples/codes in your applications as well. Therefore, it will be more than enough for you to develop Java Spring MVC applications if you attend this course.
The benefits of attending this udemy course are listed like as below;
You will earn a higher salary hence you will be able to use the latest and productive technologies and this course will also improve the way of your thinking in terms of programming by teaching you dependency injection principle used in Spring MVC and AngularJS
You will be more confident about commercial WEB programming for the following years and general programming concepts as well.
We will only use FREE Open Source Software tools during the development of components in this course.
You will learn the latest Java Spring MVC Framework with hands-on examples
You will learn the usage of AngularJS by Google for developing structured rich client side applications
You will understand the usage of latest useful basic HTML5 tags with code examples
You will gain experience of using CSS(Style Sheets) in web applications
Learn how to develop, test, run and debug Java Spring MVC applications
Learn how to integrate AngularJS with Java Spring MVC framework.
https://www.udemy.com/java-spring-mvc-framework-with-angularjs-by-google-and-html5
#springframework, #spring, #udemy, #discount, #programming, #springmvc, spring, #udemycourse, #education
This presentation has been developed in the context of the Mobile Applications Development course, DISIM, University of L'Aquila (Italy), Spring 2016.
http://www.ivanomalavolta.com
Introduction to the Spring Framework:
Generar description
IoC container
Dependency Injection
Beans scope and lifecycle
Autowiring
XML and annotation based configuration
Additional features
In this Java Hibernate Training session, you will learn Integrating Struts with Hibernate. Topics covered in this session are:
• Struts 2
• Struts Action Class
• Validation
• Control Tags
• Data Tags
For more information, visit this link:
https://www.mindsmapped.com/courses/software-development/learn-hibernate-fundamentals-from-scratch/
Hibernate 3: Hibernate-What it is ?, ORM and Issues, Hibernate Hello World CRUD, Hello world with Servlet, Hibernate Object life cycle, Hibernate Architecture, Object as Component mapping, Hibernate Inheritance, Hibernate Unidirectional Mapping, Hibernate Bidirectional mapping, HQL, Native SQL queries, Named Quarries
Vibrant Technologies is headquarted in Mumbai,India.We are the best Advanced java training provider in Navi Mumbai who provides Live Projects to students.We provide Corporate Training also.We are Best Advanced Java classes in Mumbai according to our students and corporators
MV* presentation frameworks in Javascript: en garde, pret, allez!Roberto Messora
HTML5 is the playing area, the strip, Javascript presentation frameworks are the fences and they are fierce and proud. In this presentation we will attend an interesting match between two of the emerging contenders in the MV* family: KnockoutJS and BackboneJS. We'll try to understand how they solve the same issues in modern web software development to better decide which one is suitable in our scenario.
Java Spring MVC Framework with AngularJS by Google and HTML5Tuna Tore
Course Description
#springframework, #spring, #udemy, #discount, #programming, #springmvc, spring, #udemycourse, #education
NEW udemy course related to the latest Java Spring MVC Framework 4 for developing WEB applications with popular and proven technologies such as AngularJS by Google and HTML5. (Lectures are divided in three main sections so you don't have to learn AngularJS Framework until you start the last section. The last section will teach you AngularJS by Google and the integration with Java Spring MVC Framework 4)
https://www.udemy.com/java-spring-mvc-framework-with-angularjs-by-google-and-html5
Moreover, this course is designed and created with the mindset of teaching you the latest web technologies in a short period of time with low training cost and high-quality content including real production quality code examples.
Therefore after attending this course, you will be ready to design and develop any commercial Java Spring MVC applications by learning the main principals, best practices, and most important concepts.
Furthermore, this is a fast track course and covers the most important concepts in AngularJS Framework, HTML5 and the latest Java Spring MVC Framework 4x with code examples and sample applications. You will be able to download source codes/slides/diagrams by attending this course and you can use those samples/codes in your applications as well. Therefore, it will be more than enough for you to develop Java Spring MVC applications if you attend this course.
The benefits of attending this udemy course are listed like as below;
You will earn a higher salary hence you will be able to use the latest and productive technologies and this course will also improve the way of your thinking in terms of programming by teaching you dependency injection principle used in Spring MVC and AngularJS
You will be more confident about commercial WEB programming for the following years and general programming concepts as well.
We will only use FREE Open Source Software tools during the development of components in this course.
You will learn the latest Java Spring MVC Framework with hands-on examples
You will learn the usage of AngularJS by Google for developing structured rich client side applications
You will understand the usage of latest useful basic HTML5 tags with code examples
You will gain experience of using CSS(Style Sheets) in web applications
Learn how to develop, test, run and debug Java Spring MVC applications
Learn how to integrate AngularJS with Java Spring MVC framework.
https://www.udemy.com/java-spring-mvc-framework-with-angularjs-by-google-and-html5
#springframework, #spring, #udemy, #discount, #programming, #springmvc, spring, #udemycourse, #education
This presentation has been developed in the context of the Mobile Applications Development course, DISIM, University of L'Aquila (Italy), Spring 2016.
http://www.ivanomalavolta.com
Introduction to the Spring Framework:
Generar description
IoC container
Dependency Injection
Beans scope and lifecycle
Autowiring
XML and annotation based configuration
Additional features
In this Java Hibernate Training session, you will learn Integrating Struts with Hibernate. Topics covered in this session are:
• Struts 2
• Struts Action Class
• Validation
• Control Tags
• Data Tags
For more information, visit this link:
https://www.mindsmapped.com/courses/software-development/learn-hibernate-fundamentals-from-scratch/
Hibernate 3: Hibernate-What it is ?, ORM and Issues, Hibernate Hello World CRUD, Hello world with Servlet, Hibernate Object life cycle, Hibernate Architecture, Object as Component mapping, Hibernate Inheritance, Hibernate Unidirectional Mapping, Hibernate Bidirectional mapping, HQL, Native SQL queries, Named Quarries
Vibrant Technologies is headquarted in Mumbai,India.We are the best Advanced java training provider in Navi Mumbai who provides Live Projects to students.We provide Corporate Training also.We are Best Advanced Java classes in Mumbai according to our students and corporators
MV* presentation frameworks in Javascript: en garde, pret, allez!Roberto Messora
HTML5 is the playing area, the strip, Javascript presentation frameworks are the fences and they are fierce and proud. In this presentation we will attend an interesting match between two of the emerging contenders in the MV* family: KnockoutJS and BackboneJS. We'll try to understand how they solve the same issues in modern web software development to better decide which one is suitable in our scenario.
Web Component Development with Servlet and JSP Technologies Unit 01Prashanth Shivakumar
Download Complete Material - https://www.instamojo.com/prashanth_ns/
This Web Component Development with Servlet and JSP Technologies contains 16 Units and each unit contains 60 slides in it.
Contents…
• Introduction to Web Application Technologies
• Developing a View Component
• Developing a Controller Component
• Developing Dynamic Forms
• Sharing Application Resources Using the Servlet Context
• Designing the Business Tier
• Developing Web Applications Using Struts
• Developing Web Applications Using Session Management
• Using Filters in Web Applications
• Integrating Web Applications With Databases
• Developing JSP™ Pages
• Developing JSP Pages Using Custom Tags
• Developing Web Applications Using Struts Action Forms
• Building Reusable Web Presentation Components
ITKonekt 2023: The Busy Platform Engineers Guide to API GatewaysDaniel Bryant
API Gateways are certainly not a new technology, but the way in which they are being deployed, configured, and operated within modern platforms is forcing many of us to rethink our approach. Can we simply lift and shift our existing gateway into the cloud? Is our API gateway GitOps friendly (and does it need to be)? And what about service meshes, CNI, eBPF, and...
Join this talk for a whistle stop tour of modern API gateways, which a focus on deploying and managing this technology within Kubernetes (on which many modern platforms are built):
- Understand why platform engineers should care about API Gateways today
- Learn about API gateways, options, and requirements for modern platforms
- Identify key considerations for migrating to the cloud or building a new platform on Kubernetes
- Understand how cloud native workflows impact the user/developer experience (UX/DX) of an API gateway
- Explore the components of a complete "edge stack" that supports end-to-end development flows
CraftConf 2023 "Microservice Testing Techniques: Mocks vs Service Virtualizat...Daniel Bryant
When enterprise organizations adopt microservices, containers, and cloud native development, the technologies and architectures may change, but the fact remains that we all still add the occasional bug to our code. The main challenge you now face is how to perform integration or end-to-end testing without spinning up all of your microservices locally and driving your laptop fans into high speed!
Join me for a tour of your microservices testing options using a series of Java-friendly tools.
- Explore challenges with scaling container-based application development (you can only run so many microservices locally before minikube melts your laptop)
- Learn about effective unit testing with mocks, using TestContainers for dependency testing, and using Telepresence to extend your local testing environment into the cloud
- Understand when to use each type of test and tooling based on your use case and requirements for realism, speed, and practicality
- See how Telepresence can "intercept" or reroute traffic from a specified service in a remote K8s cluster to your local dev machine
PlatformCon 23: "The Busy Platform Engineers Guide to API Gateways"Daniel Bryant
API Gateways are certainly not a new technology, but the way in which they are being deployed, configured, and operated within modern platforms is forcing many of us to rethink our approach. Can we simply lift and shift our existing gateway into the cloud? Is our API gateway GitOps friendly (and does it need to be)? And what about service meshes, CNI, eBPF, and...
Join this talk for a whistle stop tour of modern API gateways, which a focus on deploying and managing this technology within Kubernetes (on which many modern platforms are built):
- Understand why platform engineers should care about API Gateways today
- Learn about API gateways, options, and requirements for modern platforms
- Identify key considerations for migrating to the cloud or building a new platform on Kubernetes
- Understand how cloud native workflows impact the user/developer experience (UX/DX) of an API gateway
- Explore the components of a complete "edge stack" that supports end-to-end development flows
Java Meetup 23: 'Debugging Microservices "Remocally" in Kubernetes with Telep...Daniel Bryant
When enterprise organizations adopt microservices, containers, and cloud native development, the technologies and architectures may change, but the fact remains that we all still add the occasional bug to our code. The main challenge you now face is how to perform integration or end-to-end testing without spinning up all of your microservices locally and driving your laptop fans into high speed!
Join me for a tour of your microservices testing options using a series of Java-friendly tools.
- Explore challenges with scaling container-based application development (you can only run so many microservices locally before minikube melts your laptop)
- Learn about effective unit testing with mocks, using TestContainers for dependency testing, and using Telepresence to extend your local testing environment into the cloud
- Understand when to use each type of test and tooling based on your use case and requirements for realism, speed, and practicality
- See how Telepresence can "intercept" or reroute traffic from a specified service in a remote K8s cluster to your local dev machine
DevRelCon 2022: "Is Product Led Growth (PLG) the “DevOps” of the DevRel World"Daniel Bryant
Over the last year, the Ambassador Labs team has doubled down on their adoption of Product Led Growth (PLG), a growth model where product usage drives customer acquisition, retention, and expansion. It’s been an interesting journey for the DevRel team, who have found themselves working more closely with both the sales and growth engineering teams.
In their quest to reduce the friction of product adoption, they’re thinking more and more about the end-to-end experiences, experimentation, instrumentation, data analysis, and handoffs — much like we saw in the software development world with the adoption of DevOps breaking down barriers between engineering and operations.
The Ambassador Labs team have learned more about the value of creating hypotheses and analyzing quantitative data, but have also been reminded that there is no substitute for qualitative data and engaging human-to-human. Join Daniel for a whistle-stop tour of PLG through the DevRel lens:
– Understand how moving to PLG can impact devrel teams and the work they do: for better and worse!
– Explore how DevRel tooling and community platforms are increasingly overlapping with PLG marketer tooling
– Learn how to structure your goals, common languages, and teams for successfully adopting PLG
Fall 22: "From Kubernetes to PaaS to... err, what's next"Daniel Bryant
Developers building applications on Kubernetes today are being asked to not just code applications -- they are also responsible for shipping and running their applications, too. We often talk about needing a Kubernetes platform, but are we really looking for a PaaS? Or instead, are we looking for some kind of developer control plane with a Goldilock-sized collection of tools that provides just the right amount of platform? This talk will look back on my experience of building platforms, both as an end-user and now as part of an organization helping our customers do the same. We’ll wrap this talk with a walk-through of the CNCF ecosystem through the developer control plane lens, and look at what’s next in the future of this important emerging category.
Building Microservice Systems Without Cooking Your Laptop: Going “Remocal” wi...Daniel Bryant
Join me for a tour of coding, testing, and shipping microservices using remote-to-local “remocal” tools and techniques. You will:
- Understand the challenges with scaling container-based application development – i.e. you can only run so many microservices locally before minikube melts your laptop.
- Learn when to use various types of development practices and tooling based on your use case and requirements for production realism, speed, and practicality.
- Explore how to utilize containerized dependencies and Docker for testing, including for both apps and services you own and those you don’t.
- Learn how Telepresence can enable “remocal” development, expanding your local machine and Docker Desktop out into a remote Kubernetes cluster.
KubeCrash 22: Debugging Microservices "Remocally" in Kubernetes with Telepres...Daniel Bryant
Many organizations adopt cloud native development practices with the goal of shipping features faster. The technologies and architectures may change when we move to the cloud, but the fact remains that we all still add the occasional bug to our code.
The challenge here is that many of your existing local debugging tools and practices can’t be used when everything is running in a container or deployed onto Kubernetes running in the cloud. This is where the open source Telepresence tool can help.
Join Daniel to learn about:
- Quick overview of remote-local ("remocal") options and tooling e.g. “kubectl port-forward”, Skaffold, ksync, Telepresence etc.
- An exploration of how Telepresence can “intercept” or reroute traffic from a specified service in a remote K8s cluster to your local dev machine
-- The benefits of getting a “hot reload” fast feedback loop between applications being developed locally and apps running in the remote environment
JAX London 22: Debugging Microservices "Remocally" in Kubernetes with Telepre...Daniel Bryant
When enterprise organizations adopt microservices, containers, and cloud native development, the technologies and architectures may change, but the fact remains that we all still add the occasional bug to our code. The main challenge you now face is how to perform integration or end-to-end testing without spinning up all of your microservices locally and driving your laptop fans into high speed! Join me for a tour of testing microservices using a series of Java applications as a case study.
You will learn everything about effective unit testing with mocks, using TestContainers for dependency testing, and using Telepresence to extend your local testing environment into the cloud. Learn when to use each type of test and tooling based on your use case and requirements for realism, speed, and practicality. We will discuss how to utilize containerized dependencies and Docker for testing, including both apps and services you own and those you don’t. We’ll also go over the challenges with scaling container-based application development (you can only run so many microservices locally before minikube melts your laptop). Finally, you’ll see how Telepresence can "intercept" or reroute traffic from a specified service in a remote K8s cluster to your local dev machine.
CloudBuilders 2022: "The Past, Present, and Future of Cloud Native API Gateways"Daniel Bryant
Many engineers are confused about how a cloud-native API gateway relates to Kubernetes Ingress or a Service load balancer. This talk will unravel this confusion.
An API gateway is at the core of how APIs are managed, secured and presented within any web-based system. Although the technology has been in use for many years, it has not always kept pace with recent developments within the cloud-native space.
Join Daniel Bryant in uncovering the evolution of API gateways over the past ten years and how the original problems they were solving have shifted in relation to cloud-native technologies and workflow.
KubeCon EU 2022: From Kubernetes to PaaS to Err What's NextDaniel Bryant
Developers building applications on Kubernetes today are being asked to not just code applications -- they are also responsible for shipping and running their applications, too. We often talk about needing a Kubernetes platform, but are we really looking for a PaaS? Or instead, are we looking for some kind of developer control plane with a Goldilock-sized collection of tools that provides just the right amount of platform? This talk will look back on my experience of building platforms, both as an end-user and now as part of an organization helping our customers do the same. The key takeaways are:
- Treat platform as a product
- Realize that you can’t have good developer experience (DevEx) without good UX
- Focus on workflows and tooling interoperability
We’ll wrap this talk with a walk-through of the CNCF ecosystem through the developer control plane lens, and look at what’s next in the future of this important emerging category.
Devoxx UK 22: Debugging Java Microservices "Remocally" in Kubernetes with Tel...Daniel Bryant
Many Java-based organizations adopt cloud native development practices with the goal of shipping features faster. The technologies and architectures may change when we move to the cloud, but the fact remains that we all still add the occasional bug to our code. The challenge here is that many of your existing local debugging tools and practices can’t be used when everything is running in a container or deployed onto Kubernetes running in the cloud. This is where the open source Telepresence tool can help.
Join me to learn about:
– The challenges with scaling Kubernetes-based Java development i.e. you can only run so many microservices locally before minikube melts your laptop
– Quick overview of remote-local ("removal") options and tooling e.g. “kubectl port-forward”, Skaffold, ksync, Telepresence etc
– An exploration of how Telepresence can “intercept” or reroute traffic from a specified service in a remote K8s cluster to your local dev machine
– The benefits of getting a “hot reload” fast feedback loop between applications being developed locally and apps running in the remote environment
DevXDay KubeCon NA 2021: "From Kubernetes to PaaS to Developer Control Planes"Daniel Bryant
Developers building applications on Kubernetes today are being asked to not just develop applications -- they are also responsible for releasing and running their applications, too. In this talk, we’ll discuss the secular shift towards what Netflix calls “Full Cycle Development” or what Google calls “Service Ownership”. With developers managing so much of the cloud-native development loop, a new class of infrastructure has emerged -- the developer control plane. We’ll explore the evolution from Kubernetes to PaaS, to the developer control planes in use today. We’ll draw on our personal experiences and podcast chats with the larger CNCF community, and discuss real-world examples of developer control planes used at New Relic, Spotify, InVision, and Twitter. We’ll wrap this talk with a walk through of the CNCF ecosystem through the developer control plane lens, and look at what’s next in the future of this important emerging category.
JAX London 2021: Jumpstart Your Cloud Native Development: An Overview of Prac...Daniel Bryant
At a previous JAX event I talked about effective cloud native Java developer workflow. Two years later and many new developer technologies have come and gone, but I still hear daily from cloud developers about the pain and friction associated with building, debugging, and deploying to the cloud. In this talk I’ll share my latest learning on how to bring the fun and productivity back into delivering Kubernetes-based software.
Join this talk to:
Learn why the core tenets of continuous delivery — speed and safety — must be considered in all parts of the cloud native SDLC
Explore how cloud native coding benefits from thinking separately about the inner development loop, continuous integration, continuous deployment, observability, and analysis
Understand how cloud native best practices and tooling fit together. Learn about artifact syncing (e.g. Skaffold), dev environment bridging (e.g. Telepresence), GitOps (e.g. Argo), and observability-focused monitoring (e.g. Prometheus, Jaeger)
Explore the importance of cultivating an effective cloud platform and associated team of experts
Walk away with an overview of tools that can help you develop and debug effectively when using Kubernetes
Container Days: Easy Debugging of Microservices Running on Kubernetes with Te...Daniel Bryant
Many organizations adopt cloud native development practices with the goal of shipping features faster. The technologies and architectures may change when we move to the cloud, but the fact remains that we all still add the occasional bug to our code. The challenge here is that many of your existing local debugging tools and practices can't be used when everything is running in a container or deployed onto Kubernetes running in the cloud. This is where the open source Telepresence tool can help.
Join me to learn about:
- The challenges with scaling Kubernetes-based Java development i.e. you can only run so many microservices locally before minikube melts your laptop
- An exploration of how Telepresence can "intercept" or reroute traffic from a specified service in a remote K8s cluster to your local dev machine
- The benefits of getting a "hot reload" fast feedback loop between applications being developed locally and apps running in the remote environment
- A tour of Telepresence, from the sidecar proxy deployed into the remote K8s cluster to the CLI
- An overview of using "preview URLs" and header-based routing for the sharing, collaboration, and isolation of changes you are making on your local copy of an intercepted service
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...Daniel Bryant
By Daniel Bryant, Ambassador Labs We all need to be able to get user traffic into our applications, and your requirements for services running on Kubernetes are no different. "But", I hear you say, "what about the K8s Ingress spec? And how do I observe what's happening under the hood? And who should be responsible for configuring the gateway: dev or ops?" These are all good questions! Join me for a whistle-stop tour of all things emissary-ingress, where we will explore how this new edition to the family of CNCF incubation projects can make your life easier when it comes to routing, observability, and integration into the bigger (people and technology) picture.
MJC 2021: "Debugging Java Microservices Running on Kubernetes with Telepresence"Daniel Bryant
Many Java-based organizations adopt cloud native development practices with the goal of shipping features faster. The technologies and architectures may change when we move to the cloud, but the fact remains that we all still add the occasional bug to our code. The challenge here is that many of your existing local debugging tools and practices can't be used when everything is running in a container or deployed onto Kubernetes running in the cloud. This is where the open source Telepresence tool can help.
Join me to learn about:
- The challenges with scaling Kubernetes-based Java development i.e. you can only run so many microservices locally before minikube melts your laptop
- An exploration of how Telepresence can "intercept" or reroute traffic from a specified service in a remote K8s cluster to your local dev machine
- The benefits of getting a "hot reload" fast feedback loop between applications being developed locally and apps running in the remote environment
- A tour of Telepresence, from the sidecar proxy deployed into the remote K8s cluster to the CLI
- An overview of using "preview URLs" and header-based routing for the sharing, collaboration, and isolation of changes you are making on your local copy of an intercepted service
LJC 4/21"Easy Debugging of Java Microservices Running on Kubernetes with Tele...Daniel Bryant
Many Java-based organizations adopt cloud native development practices with the goal of shipping features faster. The technologies and architectures may change when we move to the cloud, but the fact remains that we all still add the occasional bug to our code. The challenge here is that many of your existing local debugging tools and practices can't be used when everything is running in a container or deployed onto Kubernetes running in the cloud. This is where the open source Telepresence tool can help.
Join me to learn about:
- The challenges with scaling Kubernetes-based Java development i.e. you can only run so many microservices locally before minikube melts your laptop
- An exploration of how Telepresence can "intercept" or reroute traffic from a specified service in a remote K8s cluster to your local dev machine
- The benefits of getting a "hot reload" fast feedback loop between applications being developed locally and apps running in the remote environment
- A tour of Telepresence, from the sidecar proxy deployed into the remote K8s cluster to the CLI
- An overview of using "preview URLs" and header-based routing for the sharing, collaboration, and isolation of changes you are making on your local copy of an intercepted service
GOTOpia 2/2021 "Cloud Native Development Without the Toil: An Overview of Pra...Daniel Bryant
At GOTO Amsterdam in 2019 I presented how to create an effective cloud native developer workflow. Two years later and many new developer technologies have come and gone, but I still hear daily from cloud developers about the pain and friction associated with building, debugging, and deploying to the cloud. In this talk I'll share my latest learning on how to bring the fun and productivity back into delivering Kubernetes-based software.
Join this talk to:
Learn why the core tenets of continuous delivery -- speed and safety -- must be considered in all parts of the cloud native SDLC
Explore how cloud native coding benefits from thinking separately about the inner development loop, continuous integration, continuous deployment, observability, and analysis
Understand how cloud native best practices and tooling fit together. Learn about artifact syncing (e.g. Skaffold), dev environment bridging (e.g. Telepresence), GitOps (e.g. Argo), and observability-focused monitoring (e.g. Prometheus, Jaeger)
Explore the importance of cultivating an effective cloud platform and associated team of experts
Walk away with an overview of tools that can help you develop and debug effectively when using Kubernetes
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...Daniel Bryant
HashiCorp Consul integrates with Ambassador to securely route Ingress traffic to Consul Service Mesh when using Kubernetes. When onboarding applications onto a service mesh or when integrating with existing applications outside of the Mesh, a north south API gateway is typically required for communications with clients outside of the network. Ambassador is a Kubernetes API Gateway that allows you to route incoming traffic to your Consul Service Mesh proxies while also providing the ability to leverage advanced API Gateway functionalities such as rate limiting and authentication.
HashiCorp Webinar: "Getting started with Ambassador and Consul on Kubernetes ...
MSc Enterprise Systems Development Guest Lecture at UniS (2/12/09)
1. Enterprise Systems Development
Direct Web Remoting (DWR): Ajax made easy…
Daniel Bryant
Department of Computing, FEPS (d.bryant@surrey.ac.uk)
Tai-Dev Ltd, (daniel.bryant@tai-dev.co.uk)
2. Today’s roadmap...
• My life story (in under 3 minutes)…
• Quick review - so, what is Ajax? (Old school vs new school)
• DWR
Introduction
Looking deeper into DWR (client-side/server-side)
Design Patterns
Implementation
Demo (and debugging)
• Quick case study – TriOpsis Ltd
• DWR is awesome!! But are there any disadvantages?
• Review
3. My life story (abridged)…
• Studying at Surrey for 8 years
BSc Computing and IT - Placement at DTI (now called BERR, DBIS etc. etc...)
MSc Internet Computing
• PhD Student within the Department of Computing
Argumentation “how humans reason”
Software Agents “mobile and/or intelligent code”
• JEE, Web 2.0, J2ME & RDBMS Consultant
Working freelance for the past 5 years
Started Tai-Dev Ltd 1 year ago (http://tai-dev.blog.co.uk/)
J2EE, JEE 5, JSE, J2ME
Spring, Hibernate, MySQL, GlassFish v2
HTML, CSS, Javascript
Prototype, Script.aculo.us, JQuery
Direct Web Remoting (DWR)…
4. So, just what is Ajax?
• “Asynchronous JavaScript and XML”
“…group of interrelated web development techniques used for creating interactive web
applications or rich Internet applications.” (Wikipedia, 2008)
• Building block for “Web 2.0” applications
Facebook, Google Mail and many more (auto-complete forms)
• Applications can retrieve data from the server asynchronously in the background
without interfering with the display and behaviour of the existing page
No browser plugins (a’la Flash, Flex, SilverLight)
• The use of JavaScript, XML, or its asynchronous use is not required…
5. Ajax - the old school way…
Server
Client
http://java.sun.com/developer/technicalArticles/J2EE/AJAX
6. Old school, not so cool…
• Client-side
Browser incompatibilities (Microsoft, and then the rest of the world...)
Long-winded
Error prone
Responsible for parsing return data, often XML-based (not OO)
Responsible for handling application errors (response codes?)
Large amount of repeated “boiler plate” code
• Server-side
Create Servlets (no abstraction, and limited chance to allow design patterns)
Construct XML document of data
Responsible for “flattening” Objects and Collections
Set content-type of return data manually
Manual error handing (convert Exceptions into response codes?)
7. Introducing the alternatives…
• JavaScript Libraries/Frameworks
dojo, JQuery, Prototype
Greatly simplify client-side code
Not so helpful on server-side…
• JSP Taglibs/JSF Components
jMaki, Ajax4jsf
Very easy to utilise
Limited server-side configuration (majority of focus on existing widgets and services)
• Proxy-based Frameworks
Direct Web Remoting (DWR), Rajax
Best of both worlds
Language specific on backend (Java)
• Tip: Always new stuff coming out – check blogs and news sites...
8. Direct Web Remoting (DWR)
Overview
• DWR allows easy implementation of Ajax functionality
Homepage @ http://directwebremoting.org/
Open source
JavaScript “client-side”
Java “server-side”
• Proxy-based framework
Client-side code can call Java server-side methods as if they were local
JavaScript functions.
Converts or “marshalls” parameters and return variable to/from Java/JavaScript
• DWR generates the intermediate code (“piping” or boilerplate code)
• Also provides Utility classes
9. DWR in pictures
Image from http://directwebremoting.org/dwr/overview/dwr
10. Client-side
• Core components
DWR JavaScript engine (‘engine.js’)
JavaScript “interface” definitions of remote methods
JavaScript Object Notation (JSON) used instead of XML
• Call Java methods as if local JavaScript functions
Albeit with callbacks…
• Hides browser incompatibilities (via “engine.js”)
XMLHttpRequest Object
Maps function calls to URLs
• Converts or “marshalls” data
Java ArrayLists into JavaScript arrays
Java Objects into JavaScript object (eg we can say user.firstname)
• Simplifies error-handling
Maps Java Exceptions to JavaScript errors
11. Server-side
• Core components
DWR JAR Library
Proxy generator
DWRServlets
• Easy framework configuration
XML or Annotations (Java 5+)
Care needed…
• Not tied to writing Servlets or Spring Controllers
Promotes good OO coding and design patterns
• Simply expose (existing) Application Services
Specify order and types of parameter
Can return any type of Collection or Object
Can utilise Spring, Struts, JSF…
12. Design Patterns
• “A design pattern in architecture and computer science is a formal way of documenting a solution
to a design problem in a particular field of expertise.”
(Wikipedia, http://en.wikipedia.org/wiki/Design_patterns, accessed 30/11/2009)
• Already covered Model, View, Controller (MVC) – utilised within Spring “MVC”
• Difficult to use MVC with Ajax/DWR - Sacrificing some benefits
MVC isolates business logic from input and presentation,
MVC permits independent development, testing and maintenance of each
With MVC we can have multiple views...
Spring Dispatcher-Servlet
Your Business Objects (User, Address Location)
and Business Logic (Application Services?)
JSP
13. Design Patterns (continued...)
• DWR based on other Design Patterns - We gain simplicity of implementation
Business Objects – basic POJOs, beans
Application Service - our business logic classes. Note, these can/should be Unit Tested
View is determined by calling HTML/JSP and JavaScript
Front Controller taken care of – the DWRServlet
• When combining Spring MVC and DWR we have to be careful when managing state shared
between the two (such as security info).
We can overcome this using other patterns, such as the Intercepting Filter
Could be implemented using Aspect Oriented Programming e.g. Spring AOP?
• Images taken from http://www.corej2eepatterns.com/ (accessed 30/11/2009)
DWRServlet
Javascript in browser
(engine.js)
Your Application Services
and Business Objects
Intercepting Filter
Would be implemented here
14. Implementation in 5 (easy) steps…
1. Copy DWR Library files into project
2. Configure your existing framework to handle DWR requests
3. Create your Data Model (Business Objects) and Application Services
4. Inform DWR of these classes and their required exposure client-side
1. dwr.xml configuration file
2. Annotations (Java 5+)
5. Create your client-side functions
16. Cooking the Spring Beans…
<!-- DWR configuration (wrapping Spring ServletWrappingController around
standard DWR Servlet, and specifying init-params (including the location
of annotated classes -->
<bean id="dwrController"
class="org.springframework.web.servlet.mvc.ServletWrappingController">
<property name="servletClass" value="org.directwebremoting.servlet.DwrServlet">
</property>
<property name="initParameters">
<props>
<!-- remember to disable in production use -->
<prop key="debug">
true
</prop>
<!—Location of annotated classes that DWR should scan for use -->
<prop key="classes">
esd.model.Location,
esd.service.LocService
</prop>
</props>
</property>
</bean>
17. Create the Model (Business Objects)
package esd.model;
import org.directwebremoting.annotations.DataTransferObject;
import org.directwebremoting.annotations.RemoteProperty;
@DataTransferObject
public class Location {
@RemoteProperty
private String address1;
@RemoteProperty
private String address2;
@RemoteProperty
private String city;
@RemoteProperty
private String county;
@RemoteProperty
private String country;
@RemoteProperty
private String postcode;
public Location(String address1, String address2, String city,
String county, String country, String postcode) {
…
18. Create your Application Services…
import …
@RemoteProxy
public class LocService {
private List<Location> initialLocs = new ArrayList<Location>();
//
// -------------- Constructors -----------------
//
public LocService() {
…
}
@RemoteMethod
public List<Location> findLocs(String postcode) {
List<Location> results = new ArrayList<Location>();
if (postcode == null || postcode.equals("")) {
results = initialLocs;
} else {
//perform search
//TODO
}
return results;
}
}
19. Create your client-side functions…
import …
@RemoteProxy
public class LocService {
<script src='dwr/interface/LocService.js'></script>
private List<Location> initialLocs = new
<script src='dwr/engine.js'></script> ArrayList<Location>();
//
// -------------- Constructors -----------------
<script> //
public LocService() {
function searchForLocs() { …
}
LocService.findLocs("", { @RemoteMethod
callback:function(dataFromServer) { public List<Location> findLocs(String postcode) {
List<Location> results = new ArrayList<Location>();
updateResults(dataFromServer); if (postcode == null || postcode.equals("")) {
results = initialLocs;
}, } else {
errorHandler:function(errorString, exception) { //perform search
//TODO
alert("Error: " + errorString); }
return results;
} }
}); }
}
function updateResults(locList) {
for (var i = 0, l = locList.length; i < l; i++) {
var txt = document.createTextNode(locList[i].address1 + "," + locList[i].postcode);
document.getElementById("results").appendChild(txt);
}
var br = document.createElement("br");
document.getElementById("results").appendChild(br);
}
</script>
20. Lights, camera, action...
(oh yes, and debugging)
• Quick demo of slide material
• Quick look at debugging
Client-side – Firefox’s Firebug
Server-side – Netbeans’ debugger
• Tip: If you want to be a professional software developer debugging
efficiently should become as natural as breathing…
Not emphasized enough in teaching (but this is just my opinion)
Probably a worthwhile skill for those MSc Dissertations as well…
21. Real world case study... TriOpsis Ltd
• Highly innovative start-up company based at the Research Park (STC)
• Check out www.triopsis.co.uk for more information
• Experts in the emerging field of Visual Business Information
• Specialising on ‘in the field’ data capture via mobile devices
• Images and associated metadata reporting relevant to target customer
22. Real world case study... TriOpsis Ltd
Screenshot of TriOpsis Flagship product – the ‘Asset Manager’ (implemented by yours truly!)
23. And finally…
There are some disadvantages with DWR…
• As with any framework that generates (blackbox) “piping”
Sometimes difficult to know what is happening “in the pipe”
• Potentially difficult to debug
Spans across client and server domain
Can use Netbeans debugger and FireFox’s Firebug
• Maintaining http session information
Hybrid of POSTed forms and Ajax
• Can cause unexpectedly large amounts of http traffic
Passing of complete object graphs (typically developer error ☺ )
• Potential security implications
Exposing incorrect methods etc.
Easy to pass sensitive data in plaintext (passwords etc.) without knowing
24. Conclusions
• We know what Ajax is…
• We examined old school/new school approaches to implementation
• We learned that DWR is a “proxy-based” framework
Providing (JavaScript) client and (Java) server-side Ajax support
Allows exposure of Java model (BOs) and services
DWR “handles the details”..
• We’ve seen how to implement DWR
• We’ve had a look at an often undervalued skill – debugging
• Seen real case study using this technology, TriOpsis, which is actively used within Industry
• And we are always aware of potential disadvantages
Beware of “black box” implementations…
Security, session and http traffic
25. Thanks for your attention…
• I’m happy to answer questions now or later...
• We will learn more about DWR in the lab session
Sorry, but I can’t promise to answer individual emails...
• Feedback, comments, constructive criticism...