This slides give you an overview of the technical challgens that Java EE application servers have faced to reinvent themselves. From monolithic to jigsaw puzzles, app servers are not the burden developpers use to use anymore
Antonio is a Java developer and knows nothing about user interfaces. He uses his Mac to develop Java EE micro-services, runs them with WildFly Swarm, packages in the Docker and exposes beautiful REST APIs.
Sébastien is a TypeScript developer and knows nothing about Java. Employed at Microsoft, he uses his PC to develop beautiful user interfaces with TypeScript and Angular to invoke the services REST exposed by Antonio.
This university is intended for Java and Angular developers who want to learn how to use a Angular / TypeScript front-end with a Java / MicroProfile back-end. It is composed of two parts:
1) More theoretical: presentation of the Enterprise Micro Profile, WildFly Swarm, the TypeScript syntax and Angular.
2) More practical: development of an Angular application using several REST back-ends (JAX-RS, JSon: API, Swagger, Cors, Hateoas, ETag, JWT, Traeffik).
As you know, Java EE is old-fashioned, heavyweight, cumbersome, and made mostly of boilerplate code. Who would develop a modern Web application with such a technological stack? Who would start an heavy application server, deploy some EJBs, and wait ages for integration tests to run—only to end up with an ugly Web page? You?
After a few slides and with the help of JBoss Forge I write a Java EE 7 app with an HTML5 front end with responsive design, sexy graphical components, manageable REST interfaces, and transactional databases.
This 50 minutes talk covers the novelties of Java EE 7 (easier to understand if you already know Java EE 6). It comes from the talk I gave with Arun Gupta at JavaOne 2013
Antonio is a Java developer and knows nothing about user interfaces. He uses his Mac to develop Java EE micro-services, runs them with WildFly Swarm, packages in the Docker and exposes beautiful REST APIs.
Sébastien is a TypeScript developer and knows nothing about Java. Employed at Microsoft, he uses his PC to develop beautiful user interfaces with TypeScript and Angular to invoke the services REST exposed by Antonio.
This university is intended for Java and Angular developers who want to learn how to use a Angular / TypeScript front-end with a Java / MicroProfile back-end. It is composed of two parts:
1) More theoretical: presentation of the Enterprise Micro Profile, WildFly Swarm, the TypeScript syntax and Angular.
2) More practical: development of an Angular application using several REST back-ends (JAX-RS, JSon: API, Swagger, Cors, Hateoas, ETag, JWT, Traeffik).
As you know, Java EE is old-fashioned, heavyweight, cumbersome, and made mostly of boilerplate code. Who would develop a modern Web application with such a technological stack? Who would start an heavy application server, deploy some EJBs, and wait ages for integration tests to run—only to end up with an ugly Web page? You?
After a few slides and with the help of JBoss Forge I write a Java EE 7 app with an HTML5 front end with responsive design, sexy graphical components, manageable REST interfaces, and transactional databases.
This 50 minutes talk covers the novelties of Java EE 7 (easier to understand if you already know Java EE 6). It comes from the talk I gave with Arun Gupta at JavaOne 2013
Links from the talk are available at:
https://github.com/claremacrae/talks/blob/master/Quickly_Testing_Qt_Desktop_Applications.md#top
Presented at Meeting C++ in Berlin on 15 November 2019.
Abstract: You've inherited some Qt GUI code: it's valuable, but it doesn't have tests, and it wasn't designed to be testable, so you need to start refactoring. But you can't refactor safely until the code has tests, and you can't add tests without refactoring! How can you ever break out of this loop?
Clare will review the challenges and potential sources of error that are specific to code that uses the Qt cross-platform graphical user interface library, and then describe how to guard against them.
There are many options for unit-testing Qt code, including Qt Test, Google Test and Catch. As well as covering those, and general principles for applying them, Clare will present a small but surprisingly effective C++11 library for applying "Approval Tests" to cross-platform Qt code.
Finally, she will briefly cover some other tools that can aid with inspecting and maintaining Qt code, which can in turn improve testability. Attendees will discover some quick, practical techniques to help write unit tests and integration tests for Qt code.
Daggerate your code - Write your own annotation processorBartosz Kosarzycki
Length: 30 min
Annotations have become a trendy topic in the Android community. Almost all automation & boiler-plate code elimination is done through annotations - starting from DTOs description (google.GSON), REST libraries (Retrofit) to dependency injection (google.Dagger2). But what if you want to eliminate boiler-plate code in your custom project? Or maybe you're writing a library for other Android-developers and you want to easily initialize that library with annotations.
This presentation walks you through the basic theory behind annotation processing and tells you how to write the most elemental annotation processor. Starting from annotation-search in the source code, source-code analysis and lastly source-code generation. The latter is done with the use of Square's JavaPoet library.
Mobile Open Day: React Native: Crossplatform fast diveepamspb
Заказчиков всегда привлекают кроссплатформенные решения, потому что они разрабатываются в 2 раза быстрее. Но их же всегда волнует вопрос UX: сможет ли кроссплатформа предоставить такую же отзывчивость и красоту, как нативное решение? React Native говорит - да. Мы покажем, как за полчаса начать писать на React Native под две мобильные платформы сразу, обеспечивая при этом нативность внешнего вида и отзывчивость приложения.
As your app code gets larger and more complex, it makes sense to break your project out into smaller reusable components. But what’s the best way to do this? How can you clearly version your internal libraries? What kind of setup and maintenance can you expect? How much could it slow down development time?
In this talk we’ll dive into the various ways you can manage internal library dependencies. We’ll chat about the current state of Android dependency management, Gradle multi-project builds, Git submodules, and creating a private maven repository in Artifactory. The speaker will share real-world examples, and the pros and cons of each approach.
Test-Driven Development of AngularJS ApplicationsFITC
Save 10% off ANY FITC event with discount code 'slideshare'
See our upcoming events at www.fitc.ca
OVERVIEW
AngularJS is an open-source JavaScript framework, maintained by Google, that simplifies development of single-page applications. This session will provide an overview of AngularJS framework and demonstrate test-driven development of single-page applications.
In this session Andy will present a walkthrough of Angular’s core features such as dependency injector and directives. He will showcase a test-driven development of AngularJS applications using Jasmine and explain Angular’s data bindings that allow for creation of views and controllers that update automatically in response to data changes. He will also demo Angular’s deep linking and front-end validations and present integration with Ruby On Rails back end using AngularJS AJAX abstractions. Finally, Andy will utilize AngularJS directives and components to create reusable UI elements.
In summary, AngularJS is a great framework for creating complex single-page applications. Attendees will leave the talk with a solid understanding of Angular’s test-driven development process.
Modularizing a project is never easy, a lot of files to move and the dependencies between them is not always what we expect. Then the Dagger configuration used in a single module project often doesn't scale well to a multi module project. Hilt is opinionated about the configuration to use (we don't need to argue anymore about using component dependencies or subcomponents!) and this configuration works perfectly even in a multi module project. In this talk we'll see first an introduction to Hilt and a comparison with Dagger to understand why it's easier to configure. Then we'll see how to leverage it in a multi module project (both in a standard layered architecture and in a Clean Architecture that uses the Dependency Inversion) to improve build speed and code testability. Spoiler alert: using sample apps that include a single feature in the app helps a lot!
Probabilmente il framework javascript più atteso di sempre, evoluzione di uno dei framework più longevi ed usati nello sviluppo front end. Si vedranno alcune delle novità introdotte e delle scelte radicali fatte da Google per la nuova versione di Angular
GwtQuery is a rewrite of the jQuery popular library with has brought to the GWT world its sexy API and its simplicity for doing complex things.
In this session Manuel will provide an overview of the fundamentals of gQuery, how to setup and use it, and how to write code which being laborious in GWT can be simplified using gQuery.
Java EE 6 Adoption in One of the World's Largest Online Financial Systems (fo...Hirofumi Iwasaki
Financial companies need Java EE to power its business today. Rakuten Card, one of the largest credit card companies in Japan, adopted Java EE 6 for its online systems rearchitecture. You can learn why we choose Java EE, and our experiences and lessons we learned. This is the first disclosing of a large credit card company in Japan sharing their story.
How to start such a big project? Why we choose it, how we selected the in house development policies, educated ourselves, and developed the additional libraries? How to launch within only six months? What is the key factor driving them as 24/7 critical real financial systems successfully? How to migrate to EE 7 in the future? We’ll answer these questions and any that you may have.
This version is the exclusive session for JJUG CCC Fall 2014 in Japan, binding both JavaOne and OOW 2014 sessions.
Links from the talk are available at:
https://github.com/claremacrae/talks/blob/master/Quickly_Testing_Qt_Desktop_Applications.md#top
Presented at Meeting C++ in Berlin on 15 November 2019.
Abstract: You've inherited some Qt GUI code: it's valuable, but it doesn't have tests, and it wasn't designed to be testable, so you need to start refactoring. But you can't refactor safely until the code has tests, and you can't add tests without refactoring! How can you ever break out of this loop?
Clare will review the challenges and potential sources of error that are specific to code that uses the Qt cross-platform graphical user interface library, and then describe how to guard against them.
There are many options for unit-testing Qt code, including Qt Test, Google Test and Catch. As well as covering those, and general principles for applying them, Clare will present a small but surprisingly effective C++11 library for applying "Approval Tests" to cross-platform Qt code.
Finally, she will briefly cover some other tools that can aid with inspecting and maintaining Qt code, which can in turn improve testability. Attendees will discover some quick, practical techniques to help write unit tests and integration tests for Qt code.
Daggerate your code - Write your own annotation processorBartosz Kosarzycki
Length: 30 min
Annotations have become a trendy topic in the Android community. Almost all automation & boiler-plate code elimination is done through annotations - starting from DTOs description (google.GSON), REST libraries (Retrofit) to dependency injection (google.Dagger2). But what if you want to eliminate boiler-plate code in your custom project? Or maybe you're writing a library for other Android-developers and you want to easily initialize that library with annotations.
This presentation walks you through the basic theory behind annotation processing and tells you how to write the most elemental annotation processor. Starting from annotation-search in the source code, source-code analysis and lastly source-code generation. The latter is done with the use of Square's JavaPoet library.
Mobile Open Day: React Native: Crossplatform fast diveepamspb
Заказчиков всегда привлекают кроссплатформенные решения, потому что они разрабатываются в 2 раза быстрее. Но их же всегда волнует вопрос UX: сможет ли кроссплатформа предоставить такую же отзывчивость и красоту, как нативное решение? React Native говорит - да. Мы покажем, как за полчаса начать писать на React Native под две мобильные платформы сразу, обеспечивая при этом нативность внешнего вида и отзывчивость приложения.
As your app code gets larger and more complex, it makes sense to break your project out into smaller reusable components. But what’s the best way to do this? How can you clearly version your internal libraries? What kind of setup and maintenance can you expect? How much could it slow down development time?
In this talk we’ll dive into the various ways you can manage internal library dependencies. We’ll chat about the current state of Android dependency management, Gradle multi-project builds, Git submodules, and creating a private maven repository in Artifactory. The speaker will share real-world examples, and the pros and cons of each approach.
Test-Driven Development of AngularJS ApplicationsFITC
Save 10% off ANY FITC event with discount code 'slideshare'
See our upcoming events at www.fitc.ca
OVERVIEW
AngularJS is an open-source JavaScript framework, maintained by Google, that simplifies development of single-page applications. This session will provide an overview of AngularJS framework and demonstrate test-driven development of single-page applications.
In this session Andy will present a walkthrough of Angular’s core features such as dependency injector and directives. He will showcase a test-driven development of AngularJS applications using Jasmine and explain Angular’s data bindings that allow for creation of views and controllers that update automatically in response to data changes. He will also demo Angular’s deep linking and front-end validations and present integration with Ruby On Rails back end using AngularJS AJAX abstractions. Finally, Andy will utilize AngularJS directives and components to create reusable UI elements.
In summary, AngularJS is a great framework for creating complex single-page applications. Attendees will leave the talk with a solid understanding of Angular’s test-driven development process.
Modularizing a project is never easy, a lot of files to move and the dependencies between them is not always what we expect. Then the Dagger configuration used in a single module project often doesn't scale well to a multi module project. Hilt is opinionated about the configuration to use (we don't need to argue anymore about using component dependencies or subcomponents!) and this configuration works perfectly even in a multi module project. In this talk we'll see first an introduction to Hilt and a comparison with Dagger to understand why it's easier to configure. Then we'll see how to leverage it in a multi module project (both in a standard layered architecture and in a Clean Architecture that uses the Dependency Inversion) to improve build speed and code testability. Spoiler alert: using sample apps that include a single feature in the app helps a lot!
Probabilmente il framework javascript più atteso di sempre, evoluzione di uno dei framework più longevi ed usati nello sviluppo front end. Si vedranno alcune delle novità introdotte e delle scelte radicali fatte da Google per la nuova versione di Angular
GwtQuery is a rewrite of the jQuery popular library with has brought to the GWT world its sexy API and its simplicity for doing complex things.
In this session Manuel will provide an overview of the fundamentals of gQuery, how to setup and use it, and how to write code which being laborious in GWT can be simplified using gQuery.
Java EE 6 Adoption in One of the World's Largest Online Financial Systems (fo...Hirofumi Iwasaki
Financial companies need Java EE to power its business today. Rakuten Card, one of the largest credit card companies in Japan, adopted Java EE 6 for its online systems rearchitecture. You can learn why we choose Java EE, and our experiences and lessons we learned. This is the first disclosing of a large credit card company in Japan sharing their story.
How to start such a big project? Why we choose it, how we selected the in house development policies, educated ourselves, and developed the additional libraries? How to launch within only six months? What is the key factor driving them as 24/7 critical real financial systems successfully? How to migrate to EE 7 in the future? We’ll answer these questions and any that you may have.
This version is the exclusive session for JJUG CCC Fall 2014 in Japan, binding both JavaOne and OOW 2014 sessions.
Happy Java 8 release! But for Java EE 7? Is the SE 8 works for EE 7? this slide shows the current situation of applying SE 8 to EE 7. This is the revised version of "JJUG CCC 2014 Spring" session, for the "Java 8 workshop at Fukuoka".
Case Study of Financial Web System Development and Operations with Oracle Web...Hirofumi Iwasaki
To stay ahead of the technology curve, financial companies require the power, flexibility, and scalability of latest enterprise technologies for 24/7 services. Rakuten Card, one of the largest credit card companies in Japan, recently renewed its web front-end systems utilizing Java EE. This session provides answers to the following questions: Among the myriad of available technologies, why did it choose Oracle WebLogic and Oracle Exadata, managed by Oracle Enterprise Manager? How did it drive this huge project to completion in only six months, using only in-house development? What were the key success factors in launching and operating this mission-critical service? Hear about its extraordinary improvement results and how its selections are effective for financial enterprise systems.
Many enterprise systems build at 2000 - 2010 uses J2EE old specifications with Struts web framework. But nowadays J2EE improved as Java EE, with standard web framework JSF 2. With this slides you can learn how to migrate old-styled J2EE + Struts systems to sophisticated Java EE with JSF 2 specification. This slides was used in Java Day Tokyo 2014 C4 window, presented by the author. And some slides is specialized for Japanese enterprise systems, but the theme is very standard and for almost all J2EE users in the world.
Consideration points for migrating from older pre-J2EE, J2EE 1.2-1.4, Java EE 5-6 to EE 7, and migration points especially for web front-end systems and back-ends. JSP to JSF, EJB to CDI with migration procedure details. Slide materials on Java Day Tokyo 2016.
Real world batch implementations and frameworks.
These slides explores various ways in which batch processing can implemented with Java EE and other frameworks. It includes pro and cons of batch implementations with JCL, prepared statements, CDI, JSR 352 and embedded EJB containers. It helps to understand when to use JSR 352 and when not to, the benefits of using an embedded EJB container for batch processing, and the best practices to follow when designing batch processes.
Are Websphere or Weblogic appropriate for your project? Too big" ? Do Jetty or Tomcat actually meet your needs? Too "small"?
Neither too big nor too small. What you need is "just enough app server" to support only the subset of APIs and services your application needs.
CON6423: Scalable JavaScript applications with Project NashornMichel Graciano
In the age of cloud computing and highly demanding systems, some new approaches for application architectures such as the event-driven model have been proposed and successfully implemented with Node.js. With the Nashorn JavaScript engine, it is possible to run JavaScript applications directly in the JVM, enabling access to the latest Node.js frameworks while taking advantage of the Java platform’s scalability, manageability, tools, and extensive collection of Java libraries and middleware. This session demonstrates how to use Nashorn to create highly scalable JavaScript applications leveraging the full power of the JVM by using the projects Avatar and Node.js with Avatar.js and Vert.x, highlighting their key benefits, issues, and challenges.
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019Jakarta_EE
In this presentation we will cover some of those challenges, discuss how one of those standards efforts (Eclipse MicroProfile) has helped move the Java community forward, and give an hint at some changes happening in the Java language and frameworks with the Quarkus project as an example.
Speaker: Mark Little, Red Hat
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019The Eclipse Foundation
In this presentation we will cover some of those challenges, discuss how one of those standards efforts (Eclipse MicroProfile) has helped move the Java community forward, and give an hint at some changes happening in the Java language and frameworks with the Quarkus project as an example.
Speaker: Mark Little, Red Hat
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?Dmitri Shiryaev
. Problem we are facing
. Big Data Stacks
. Why validation
. What is "Success" and the effort to achieve it
. Solutions
. Ops testing
. Platform certification
. Application testing
. Stack on stack
. Test artifacts are First Class Citizen
. Assembling validation stack (vstack)
. Tailoring vstack for target clusters
. D3: Deployment/Dependencies/Determinism
GeoServer is an amazing project, and an amazing project to work on!
Please attend this workshop to:
* Get Started with the GeoServer codebase
* Orientation with a Tour of the GeoServer architecture
* Introduction the service dispatch framework, includin creating your own service
* Built chain and test facilities
* Create a custom function for use with map styling
* Create a custom process for use with style transformations and web processing service
* Anatomy of a successful pull request
Attendees will build their own GeoServer, learn a bit about how our community operates, and enjoy extending the base application.
If you are a developer looking to support GeoServer, or join us for a sprint or bug-stomp, this workshop is great introduction.
This course features hands-on development. We encourage and expect you to bring your favourite Java development environment.
For a good time with open source join GeoServer today!
Devoxx : being productive with JHipsterJulien Dubois
Slides from the "being productive with JHipster" talk at Devoxx Belgium 2016 by Julien Dubois (JHipster lead) & Deepu K Sasidharan (JHipster co-lead).
Live video is at: https://www.youtube.com/watch?v=dzdjP3CPOCs
Code commited (live!) during the presentation is at:
https://github.com/jhipster/devoxx-2016
IntoScience is an interactive educational platform built using Unity. It is used in thousands of schools across Australia
and the globe. It recently made the leap to WebGL to continue delivering features to chrome-based users. In porting
a huge amount of content to this new technology, you could say we learned a thing or two. Here we share the highs,
lows and hot-fixes in moving a massive product to a post-plugin existence.
CodiLime Tech Talk - Dawid Trzebiatowski i Wojciech Urbański: Opening the Flo...CodiLime
Tech Talk CodiLime 22.04.2020.
YT: https://youtu.be/66S5LFM12JQ
In this talk, we’re going to introduce the general public to our approach to simplified Spinnaker management using Floodgate, our open-source tool as well as Spinnaker-provided components, such as Sponnet.
eXoer on the grill: eXo Add-ons factory using Docker and CodenvyeXo Platform
Few months ago, Codenvy released a great tutorial about “Creating an eXo Factory Using Codenvy and Docker” http://blog.codenvy.com/creating-codenvy-factory-exo-extensions-development which gave great details about how eXo, Codenvy and Docker can work together to give developers an easy way to code eXo add-ons.
In this presentation we will bring insights about how we used Codenvy’s Factories (with Docker recipes) to give developers a one-click easy way to begin coding eXo Add-ons.
eXoers on the Grill aims to provide some incentive & fresh air for our staff in order to constantly re-think our methods, spread good practices, promote some technology or tools, generate ideas, etc... All the teams are invited to contribute by picking up some hot topics of their choice and spread to other teams.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
2. Antonio Goncalves
●
Freelance software architect
●
Author (Java EE 5 and Java EE 6)
●
JCP expert member (Java EE 6, Java EE 7)
●
Co-leader of the Paris JUG
●
Les Cast Codeurs podcast
● Java Champion
antonio goncalves 2
3. Co-creator of Devoxx France
●
Little brother of Devoxx (Belgium)
●
3 days conference (18th to 20th April 2012)
●
140 talks (75% in French)
●
In Paris
●
Cheap (450€)
● www.devoxx.fr
antonio goncalves 3
4. Why am I talking here today
●
Former BEA employee
●
Started working with J2EE in 1998
●
With Weblogic 3.x
●
Java EE 6 / 7 Expert Member
●
Has used/played with most app servers
● Blogs about app servers
antonio goncalves 4
8. Server and services
●
Server ●
Services
● « Program running to ● Security
serve the requests of ● Transaction
other programs »
● Load balancing
● Application server
● Distribution
● Database server
● Management
● Communication server
● Performance
● File server
● ...
● Fax server
● ...
antonio goncalves 8
9. We use application servers not to
reinvent the wheel
(i.e the technical services)
10. « Application » server
●
Market dominated by
● Java
● .Net
●
Proprietary
●
Other programming models
antonio goncalves 10
11. Let's focus on Java
Java EE 6
Web Profile 6
Servlet
antonio goncalves 11
12. Web profile
●
Java EE 6
● 28 specifications
● Web profile
● 12 specifications
●
Other profiles will come
●
Brings modularity
antonio goncalves 12
13. Modularity
●
OSGi / Modules / What ever
● Java modules in Java SE 8 / Java EE 8 ?
● App servers become jigsaw puzzles
●
Only startup needed modules
● Faster
●
Lighter
●
Time is changing
antonio goncalves 13
14. History
JPE J2EE 1.2 J2EE 1.3 J2EE 1.4 Java EE 5 Java EE 6 Java EE 7
1995 May 1998 Dec 1999 Sept 2001 Nov 2003 May 2006 Dec 2009 Mar 2013
antonio goncalves 14
15. Startup time of JBoss
Using a Windows XP virtual machine (Virtual Box)
antonio goncalves 15
16. Startup time of other servers
Using a Windows XP virtual machine (Virtual Box)
antonio goncalves 16
17. Industrial strengh
●
App servers implement the same specs
●
They all do the same basic stuff...
●
… so they must find a differentiator
● Startup time
● Memory footprint
● Administration
● Add ons
● Clustering
antonio goncalves 17
18. Money, get away
●
Why is the app server battle so tough ?
●
*Because there is money involved :
● 2010 : app server market = $3.2 billion
● 9% growth per year
● 2015 : reaching $5 billion
(*)Gartner 2010
antonio goncalves 18
22. Future<App Server>
●
« *In the next 5 years most app servers will be
extended for cloud computing purposes »
●
Elastic resource allocation
●
Dynamic clustering
●
Horizontal scaling
●
Multitenancy (Java EE 7)
(*)Gartner 2011
antonio goncalves 22
25. Webs.... fear
●
Ops love it
●
Devs hate it
● … and IBM wants us to love it now
●
OGSi
● Simple, Lightweight, Fast
●
Liberty Profile (not the web profile)
● No EJB Lite, no CDI
●
Free for development
antonio goncalves 25
34. Resin
●
Created in 1999 (web server)
●
First web profile certified in 2011
●
4.7 millions web sites hosted on Resin
● Mostly in finance
● “Visionary” on Gartner Magic Quadrant
●
Resin open source (free)
●
Resin professional
● Commercial license
antonio goncalves 34
35. Inside Resin
●
Based on CanDI
●
Quercus (PHP)
●
Watchdog
●
Cloud ready (dynamic clustering)
●
Remote EJBs use Hessian (instead of RMI)
● Multitenancy
antonio goncalves 35
41. Developing / Debugging
●
Good old “develop/package/deploy/start”
● Event if app servers start quickly
● Takes too much time
●
JRebel...
● … is your friend
● Hot deployment
● Reload classes
● Updates web resources
● Saves you time
antonio goncalves 41
43. Testing
●
Unit Tests
● Mock container services
● Integration Tests
● WYTIWYR (What You Test Is What You Run)
● Use container services
● EJBContainer API (in Java EE 6)
● Arquillian
antonio goncalves 43
44. Unit test with Mockito
@RunWith(MockitoJUnitRunner.class)
public class ItemEJBTest {
@Mock
private EntityManager mockedEntityManager;
@Mock
private TypedQuery mockedQuery;
private ItemEJB itemEJB;
@Before
public void init() throws Exception {
itemEJB = new ItemEJB();
itemEJB.setEntityManager(mockedEntityManager);
}
}
antonio goncalves 44
45. Integration test with EJBContainer
public class ItemEJBIT {
private static EJBContainer ec;
private static Context ctx;
@BeforeClass
public static void init() throws Exception {
Map<String, Object> properties = new HashMap<>();
properties.put(EJBContainer.MODULES, new
File("target/classes"));
ec = EJBContainer.createEJBContainer(properties);
ctx = ec.getContext();
}
}
antonio goncalves 45
46. Integration test with Arquillian
@RunWith(Arquillian.class)
public class ItemEJBIT {
@Inject
private ItemEJB itemEJB;
@Deployment
public static JavaArchive createTestArchive() {
JavaArchive archive = ShrinkWrap
.create(JavaArchive.class)
.addPackage(Book.class.getPackage())
.addAsManifestResource(INSTANCE, "beans.xml")
.addAsResource("META-INF/persistence.xml"..);
return archive;
}
antonio goncalves 46
47. Integration Testing
●
In memory database
●
In memory container
● EJBContainer API
●
Embedded container with Arquillian
● Remote container with Arquillian
●
IT richer but slower that UT
antonio goncalves 47
49. Portable ?
●
Java EE is a standard
●
Yaps Petstore only uses standards
●
Standards should run everywhere
●
I want my Yaps Petstore to run everywhere
● But it's not that easy
antonio goncalves 49
50. JPA
●
Lazy Loading bidirectional entities
● Spec has undefined behaviour
● Works well with EclipseLink
● Doesn't with Hibernate (use Fetch Join)
● Fetch Joins don't work with EclipseLink
antonio goncalves 50
51. Lazy loading
List<Product> products = em.createQuery
("SELECT p FROM Product p WHERE p.category.name =:n")
.getResultList();
for (Product product : products) {
Category category = product.getCategory();
}
antonio goncalves 51
52. Lazy loading
List<Product> products = em.createQuery
("SELECT p FROM Product p WHERE p.category.name =:n")
.getResultList();
for (Product product : products) {
Category category = product.getCategory();
if (category != null)
category.getName(); Can return a proxy
}
Makes sure you get the entity
antonio goncalves 52
53. Datasource
●
Needs to be defined
● In the container through admin
● Via web.xml, application.xml, ejb-jar.xml
● Or via annotation
●
Points to a database
●
In memory DB are good for development
● Each app server uses it's own in memory DB
● Derby
● Not in JBoss (add derby.jar to .war)
antonio goncalves 53
55. Default Datasource in Java EE 7
@DataSourceDefinition(
className ="org.apache.derby.jdbc.EmbeddedDataSource
name = "java:global/jdbc/applicationPetstoreDS",
...)
<persistence>
<persistence-unit name="applicationPetstorePU"...>
<jta-data-source>
java:global/jdbc/applicationPetstoreDS
...
</persistence>
@Inject
private EntityManager em;
antonio goncalves 55
56. Other resources in Java EE 7
@JMSConnectionFactoryDefinition(
name="java:app/MyJMSFactory",
resourceType="javax.jms.QueueConnectionFactory",
clientId="foo",resourceAdapter="jmsra",
InitialPoolSize=5, maxPoolSize=15
)
@JMSDestinationDefinition(
name="java:app/orderQueue",
resourceType="javax.jms.Queue",
resourceAdapter="jmsra",
destinationName="orderQueue"
)
antonio goncalves 56
57. Properties not all standard
<persistence-unit name="applicationPetstorePU"...>
...
<properties>
<!-- Standard Properties -->
<property name="javax.persistence.xxx" value="xxx"/>
<!-- Properties for EclipseLink -->
<property name="eclipselink.ddl-generation" value="create-tables
<!-- Properties for Hibernate -->
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<!-- Properties for OpenJPA -->
<property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema(ForeignKeys=true)"/>
</properties>
</persistence-unit>
antonio goncalves 57
58. Persistence properties in Java EE 7
<persistence-unit name="applicationPetstorePU"...>
...
<properties>
<!-- Standard Properties -->
<property name="javax.persistence.xxx" value="xxx"/>
<property name="javax.persistence.ddl" value="drop-and-create"/>
<!-- Properties for EclipseLink -->
<property name="eclipselink.ddl-generation" value="create-tables
<!-- Properties for Hibernate -->
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
<!-- Properties for OpenJPA -->
<property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema(ForeignKeys=true)"/>
</properties>
</persistence-unit>
Not sure of the syntax Not sure of the syntax
antonio goncalves 58
59. Initialize database
●
Having some data in the DB
●
Running sql script
●
derbytools.jar has an API
●
Hibernate : import.sql (but not with other ORMs)
antonio goncalves 59
60. Use a Singleton with @Startup
@Singleton
@Startup
public class DBPopulator {
@Inject
private CatalogService catalogService;
@PostConstruct
private void populateDB() {
catalogService.createCategory(new Category("Fish"))
}
}
antonio goncalves 60
62. Portable ?
●
TCK doesn't cover all the cases
● e.x. all the possible JPQL query syntax
● Implementations fill (or not) black holes
●
100% portability is still a myth...
● … but it's getting better
●
… and Java EE 7 will improve some bits
●
Any way, you don't change app server every day
●
… except for the Yaps Petstore ;o)
antonio goncalves 62
68. Creative Commons
●
Attribution — You must attribute the work in
the manner specified by the author or licensor
(but not in any way that suggests that they
endorse you or your use of the work).
● Noncommercial — You may not use this work for
commercial purposes.
● Share Alike — If you alter, transform, or build
upon this work, you may distribute the resulting
work only under the same or similar license to
this one.
antonio goncalves 68