Presented at JAX London 2013
Per-tenant resource management can help ensure that collocated tenants peacefully share computational resources based on individual quotas. This session begins with a comparison of deployment models (shared: hardware, OS, middleware, everything) to motivate the multitenant approach. The main topic is an exploration of experimental data isolation and resource management primitives in IBM’s JDK that combine to help make multitenant applications smaller and more predictable.
Update:
Video available from Oredev: vimeo.com/53147485
Metaprogramming is the dirty little secret behind the success of many Java frameworks such as Spring and Struts2, and constitutes the backbone of many of the most fundamental APIs across the JEE technology stack. This session aims introduce the topic and highlight, with code examples, the different mechanisms and techniques to take advantage of this underused feature of the Java Programming Language.
This session will adopt a learn-by-example approach that combines the philosophy and theory behind metaprogramming with concrete code examples. The audience will be walked real-life scenarios to highlight the benefits of this technique such as minimizing the number of lines of code, reduced development time, and greater flexibility, etc… Design patterns, and best practices will be picked up along the way.
No previous knowledge or exposure to the topic is required, but an intermediate understanding of Java SE is expected.
Update:
Video available from Oredev: vimeo.com/53147485
Metaprogramming is the dirty little secret behind the success of many Java frameworks such as Spring and Struts2, and constitutes the backbone of many of the most fundamental APIs across the JEE technology stack. This session aims introduce the topic and highlight, with code examples, the different mechanisms and techniques to take advantage of this underused feature of the Java Programming Language.
This session will adopt a learn-by-example approach that combines the philosophy and theory behind metaprogramming with concrete code examples. The audience will be walked real-life scenarios to highlight the benefits of this technique such as minimizing the number of lines of code, reduced development time, and greater flexibility, etc… Design patterns, and best practices will be picked up along the way.
No previous knowledge or exposure to the topic is required, but an intermediate understanding of Java SE is expected.
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 IO 2023 - Dynamic OpenAPIs with Spring Cloud GatewayIván López Martín
Imagine this scenario. You follow an OpenAPI-first approach when designing your services. You have a distributed architecture with multiple services and all of them expose a RESTful API and have their OpenAPI Specification. Now you use Spring Cloud Gateway in front of them so you can route the requests to the appropriate service and apply cross-cutting concerns. But, what happens with the OpenAPI of every service? It would be great if you could generate a unique OpenAPI for the whole system in the Gateway. You could also expose and transform only selected endpoints when defining them as public. And what about the routes? You would like to reconfigure them dynamically and on-the-fly in the Gateway when there is a change in a service, right?
Stop imagining. In this talk, I will show you how we have done that in our product and how we are leveraging the programmatic Spring Cloud Gateway API to reconfigure the routes on the fly. You will also see it in action during the demo!
This is the presentation I made on JavaDay Kiev 2015 regarding the architecture of Apache Spark. It covers the memory model, the shuffle implementations, data frames and some other high-level staff and can be used as an introduction to Apache Spark
Fast as C: How to Write Really Terrible JavaCharles Nutter
For years we’ve been told that the JVM’s amazing optimizers can take your running code and make it “fast” or “as fast as C++” or “as fast as C”…or sometimes “faster than C”. And yet we don’t often see this happen in practice, due in large part to (good and bad) development patterns that have taken hold in the Java world.
In this talk, we’ll explore the main reasons why Java code rarely runs as fast as C or C++ and how you can write really bad Java code that the JVM will do a better job of optimizing. We’ll take some popular microbenchmarks and burn them to the ground, monitoring JIT logs and assembly dumps along the way.
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022Matt Raible
Microservice architectures are all the rage in JavaLand. They allow teams to develop services independently and deploy autonomously.
Why microservices?
IF
you are developing a large/complex application
AND
you need to deliver it rapidly, frequently, and reliably over a long period of time
THEN
the Microservice Architecture is often a good choice.
Reactive architectures are becoming increasingly popular for organizations that need to do more, with less hardware. Reactive programming allows you to build systems that are resilient to high load.
In this session, I'll show you how to use JHipster to create a reactive microservices architecture with Spring Boot, Spring Cloud, Keycloak, and run it all in Docker. You will leave with the know-how to create your own resilient apps!
Related blog post: https://developer.okta.com/blog/2021/01/20/reactive-java-microservices
YouTube demo: https://youtu.be/clkEUHWT9-M
GitHub repo: https://github.com/oktadev/java-microservices-examples/tree/main/reactive-jhipster
Introduction To Big Data with Hadoop and Spark - For Batch and Real Time Proc...Agile Testing Alliance
Introduction To Big Data with Hadoop and Spark - For Batch and Real Time Processing by "Sampat Kumar" from "Harman". The presentation was done at #doppa17 DevOps++ Global Summit 2017. All the copyrights are reserved with the author
Introduction to JADE (Java Agent DEvelopment) FrameworkAhmed Gad
As part of artificial intelligence course given in faculty of computers and information, JADE was a very robust framework to create agents in software.
JADE is regarded the most common framework to build a multi-agent system simulating the behaviors of a real working environment.
Java Agent DEvelopment Framework, or JADE, is a software framework for the development of intelligent agent, implemented in Java. JADE system supports coordination between several agents FIPA and provides a standard implementation of the communication language FIPA-ACL, which facilitates the communication between agents and allows the services detection of the system. JADE was originally developed by Telecom Italia and is distributed as free software.
In this course, multiple agents are created with different behaviors built inside each one. Using the Agent Communication Language (ACL) provided by JADE, messages can be sent and received among different agents.
Find me on:
AFCIT
http://www.afcit.xyz
YouTube
https://www.youtube.com/channel/UCuewOYbBXH5gwhfOrQOZOdw
Google Plus
https://plus.google.com/u/0/+AhmedGadIT
SlideShare
https://www.slideshare.net/AhmedGadFCIT
LinkedIn
https://www.linkedin.com/in/ahmedfgad/
ResearchGate
https://www.researchgate.net/profile/Ahmed_Gad13
Academia
https://www.academia.edu/
Google Scholar
https://scholar.google.com.eg/citations?user=r07tjocAAAAJ&hl=en
Mendelay
https://www.mendeley.com/profiles/ahmed-gad12/
ORCID
https://orcid.org/0000-0003-1978-8574
StackOverFlow
http://stackoverflow.com/users/5426539/ahmed-gad
Twitter
https://twitter.com/ahmedfgad
Facebook
https://www.facebook.com/ahmed.f.gadd
Pinterest
https://www.pinterest.com/ahmedfgad/
Overview of Spring Boot for the rapid development of Java Applications and Microservices. More information can be found at : https://www.spiraltrain.nl/course-spring-boot-development/?lang=en
Introduction to the Spring Framework:
Generar description
IoC container
Dependency Injection
Beans scope and lifecycle
Autowiring
XML and annotation based configuration
Additional features
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 IO 2023 - Dynamic OpenAPIs with Spring Cloud GatewayIván López Martín
Imagine this scenario. You follow an OpenAPI-first approach when designing your services. You have a distributed architecture with multiple services and all of them expose a RESTful API and have their OpenAPI Specification. Now you use Spring Cloud Gateway in front of them so you can route the requests to the appropriate service and apply cross-cutting concerns. But, what happens with the OpenAPI of every service? It would be great if you could generate a unique OpenAPI for the whole system in the Gateway. You could also expose and transform only selected endpoints when defining them as public. And what about the routes? You would like to reconfigure them dynamically and on-the-fly in the Gateway when there is a change in a service, right?
Stop imagining. In this talk, I will show you how we have done that in our product and how we are leveraging the programmatic Spring Cloud Gateway API to reconfigure the routes on the fly. You will also see it in action during the demo!
This is the presentation I made on JavaDay Kiev 2015 regarding the architecture of Apache Spark. It covers the memory model, the shuffle implementations, data frames and some other high-level staff and can be used as an introduction to Apache Spark
Fast as C: How to Write Really Terrible JavaCharles Nutter
For years we’ve been told that the JVM’s amazing optimizers can take your running code and make it “fast” or “as fast as C++” or “as fast as C”…or sometimes “faster than C”. And yet we don’t often see this happen in practice, due in large part to (good and bad) development patterns that have taken hold in the Java world.
In this talk, we’ll explore the main reasons why Java code rarely runs as fast as C or C++ and how you can write really bad Java code that the JVM will do a better job of optimizing. We’ll take some popular microbenchmarks and burn them to the ground, monitoring JIT logs and assembly dumps along the way.
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022Matt Raible
Microservice architectures are all the rage in JavaLand. They allow teams to develop services independently and deploy autonomously.
Why microservices?
IF
you are developing a large/complex application
AND
you need to deliver it rapidly, frequently, and reliably over a long period of time
THEN
the Microservice Architecture is often a good choice.
Reactive architectures are becoming increasingly popular for organizations that need to do more, with less hardware. Reactive programming allows you to build systems that are resilient to high load.
In this session, I'll show you how to use JHipster to create a reactive microservices architecture with Spring Boot, Spring Cloud, Keycloak, and run it all in Docker. You will leave with the know-how to create your own resilient apps!
Related blog post: https://developer.okta.com/blog/2021/01/20/reactive-java-microservices
YouTube demo: https://youtu.be/clkEUHWT9-M
GitHub repo: https://github.com/oktadev/java-microservices-examples/tree/main/reactive-jhipster
Introduction To Big Data with Hadoop and Spark - For Batch and Real Time Proc...Agile Testing Alliance
Introduction To Big Data with Hadoop and Spark - For Batch and Real Time Processing by "Sampat Kumar" from "Harman". The presentation was done at #doppa17 DevOps++ Global Summit 2017. All the copyrights are reserved with the author
Introduction to JADE (Java Agent DEvelopment) FrameworkAhmed Gad
As part of artificial intelligence course given in faculty of computers and information, JADE was a very robust framework to create agents in software.
JADE is regarded the most common framework to build a multi-agent system simulating the behaviors of a real working environment.
Java Agent DEvelopment Framework, or JADE, is a software framework for the development of intelligent agent, implemented in Java. JADE system supports coordination between several agents FIPA and provides a standard implementation of the communication language FIPA-ACL, which facilitates the communication between agents and allows the services detection of the system. JADE was originally developed by Telecom Italia and is distributed as free software.
In this course, multiple agents are created with different behaviors built inside each one. Using the Agent Communication Language (ACL) provided by JADE, messages can be sent and received among different agents.
Find me on:
AFCIT
http://www.afcit.xyz
YouTube
https://www.youtube.com/channel/UCuewOYbBXH5gwhfOrQOZOdw
Google Plus
https://plus.google.com/u/0/+AhmedGadIT
SlideShare
https://www.slideshare.net/AhmedGadFCIT
LinkedIn
https://www.linkedin.com/in/ahmedfgad/
ResearchGate
https://www.researchgate.net/profile/Ahmed_Gad13
Academia
https://www.academia.edu/
Google Scholar
https://scholar.google.com.eg/citations?user=r07tjocAAAAJ&hl=en
Mendelay
https://www.mendeley.com/profiles/ahmed-gad12/
ORCID
https://orcid.org/0000-0003-1978-8574
StackOverFlow
http://stackoverflow.com/users/5426539/ahmed-gad
Twitter
https://twitter.com/ahmedfgad
Facebook
https://www.facebook.com/ahmed.f.gadd
Pinterest
https://www.pinterest.com/ahmedfgad/
Overview of Spring Boot for the rapid development of Java Applications and Microservices. More information can be found at : https://www.spiraltrain.nl/course-spring-boot-development/?lang=en
Introduction to the Spring Framework:
Generar description
IoC container
Dependency Injection
Beans scope and lifecycle
Autowiring
XML and annotation based configuration
Additional features
What You Need to Know About Lambdas - Jamie Allen (Typesafe)jaxLondonConference
Presented as a keynote at JAX London 2013
Lambdas are coming to the Java language in the upcoming release of Java 8! While this is generally great news, many Java developers have never experienced Lambdas before, and have not yet learned the best ways to use them for maximum productivity. In this talk, we will discuss best practices for using Lambdas in Java and other JVM-based languages, and we will investigate how we can make these constructs more usable in production.
Presented at JAX London 2013.
Software craftsman and co-founder of the London Software Craftsmanship Community (LSCC). Sandro has been coding since a very young age but just started his professional career in 1996. He has worked for startups, software houses, product companies and international consultancy companies. Having worked as a consultant for the majority of his career, he had the opportunity to work in a good variety of projects, with different languages and technologies, and across many industries. Currently he is a director at UBS Investment Bank, where he works as a hands-on mentor, giving technical directions, looking after the quality of the systems and pair-programming with developers in the UK and abroad. His main objective is to help developers to become real software craftsmen.
Bringing your app to the web with Dart - Chris Buckett (Entity Group)jaxLondonConference
Presented at JAX London 2013
Building complex applications in the browser is hard especially when you are working in teams. Dart is ideal for developing the next generation of web applications in an enterprise environment, by allowing you to communicate type information to your fellow developers and automated tools. With familiar (but lightweight) syntax, class-based OOP and a type system that allows tooling, Java developers will quickly feel at home with Dart.
Design is a Process, not an Artefact - Trisha Gee (MongoDB)jaxLondonConference
Presented at JAX London 2013
Agile methodologies have had us moving away from Big Up Front Design to evolutionary, emergent design. But how does that work in the real world? Using experiences gained when creating the new Java driver for MongoDB, Trisha takes us on a design journey, where the answer to every question is "It Depends", the users of the system and their use cases are unknown, and lurking at the back of every decision is the question “but will it be backwards compatible?” We’ve all been there, trying to work out how to implement requirements, but have we really thought about the process of design?
Databases and agile development - Dwight Merriman (MongoDB)jaxLondonConference
Presented as a keynote at JAX London 2013
Much has been made of scalability as a driver for choosing a database, but the choice of a database influences much more than the scaling architecture. Different database choices drive different data models which in turn influence the development process.
How Hailo fuels its growth using NoSQL storage and analytics - Dave Gardner (...jaxLondonConference
Presented at JAX London 2013
Hailo, the taxi app, has served more than 5 million passengers in 15 cities and has taken fares of $100 million this year. I'm going to talk about how that rapid growth has been powered by a platform based on Cassandra and operational analytics and insights powered by Acunu Analytics. I'll cover some challenges and lessons learned from scaling fast!
Presented at JAX London
MapReduce begat Hadoop begat Big Data. NoSQL moved us away from the stricture of monolithic storage architectures to fit-for-purpose designs. But, Houston, we still have a problem. Architects are still designing systems like this is the '70s. SOA, went from buzzword to the bank with the emergence and evolution of the cloud and on-demand right-now elasticity. Yet most systems are still designed to store-then-compute rather than to observe, orient, decide and act on in-flight data.
Presented at JAX London 2013
Whether we're talking Analytics, Big Data, Cloud, NoSQL, Continuous Integration and Deployment, Mobile computing or Minecraft, Java is at the nexus of the mass convergence of trends we're currently seeing in tech. It's still fashionable in Web developer circles to dismiss Java the language, but its not going anywhere, and the JVM as we know it goes from strength to strength. In this talk James Governor will look to put the return of Java into context, with both stories, and quantitative data.
Presented as a keynote at JAX London 2013
A programmer's perspective on the Internet of Things, reactive development, the hacker ethic, and how we can open up software development, making and craft to the masses. This talk features a live presentation of a home-made, modified Internet of Things. And robots. Audience participation... mandatory!
Are Hypermedia APIs Just Hype? - Aaron Phethean (Temenos) & Daniel Feist (Mul...jaxLondonConference
Presented at JAX London 2013
Hypermedia or HATEOAS APIs get a lot of air cover but there aren't many of them in the wild. This session will summarize the challenges that exist when building hypermedia REST API’s and explain why it’s worth it. We’ll take a comparative look at various different approaches for using hypermedia in a typical REST API, before taking a closer look at an approach that automatically generates links from a semantically rich API definition.
Designing and Building a Graph Database Application - Ian Robinson (Neo Techn...jaxLondonConference
Presented at JAX London
In this session we'll look at some of the design and implementation strategies you can employ when building a Neo4j-based graph database solution, including architectural choices, data modelling, and testing.
Introducing Vert.x 2.0 - Taking polyglot application development to the next ...jaxLondonConference
Presented at JAX London 2013
Vert.x is a lightweight, high performance, application platform for the JVM that's designed for modern mobile, web, and enterprise applications. The recent Vert.x 2.0 release marks a coming of age for Vert.x, as it progresses to a fully independent project. We'll dive into the Vert.x 2.0 release and show how the powerful new module system enables a Vert.x ecosystem by allowing modules to be re-used via Maven and Bintray repositories. You'll also learn about how better build tool and IDE integration makes developing applications with Vert.x a breeze.
What's new in Windows 10? See presentation from a live webinar with virtual classroom IT training expert – Martin Budnarowski – who gives a walk through some of the features in Microsoft’s latest OS - Windows 10.
Microsoft are taking a new direction. Their new Windows 10 will change the way you and your learners use your technology. It will unify all devices from your mobile phone to your tablet to your PC; some people call it the Internet of Things. Windows 10 is a true game changer!
If you’re interested in learning what’s new in Windows 10, see the slides from our recent webinar hosted in CloudRooms™, live online learning solution.
Presented at JAX London 2013
Groovy is not a newcomer to the arena of alternative languages for the JVM. With over 1.7 million downloads a year, it's clearly ahead of the pack. But what makes it a great choice for your projects?
- a flat learning curve for Java developers
- its seamless Java integration where you can mix & mash Groovy & Java together
- a malleable & concise syntax fit for Domain-Specific Languages
- an interesting take on type safety
- its rich ecosystem of projects: Grails, Gradle, GPars, Spock, Griffon, Geb...
Packed Objects: Fast Talking Java Meets Native Code - Steve Poole (IBM)jaxLondonConference
Presented at JAX London 2013
Worried about the future of Java? Want to see it keep moving forward? Don't be concerned. The transformation of Java is already underway. Driven by new technologies and new opportunities Java and the JVM are entering uncharted worlds and challenging old approaches. In this session learn about one such expedition in the form of an introductory talk to technology being developed by IBM. This experimental technology is exploring a new way to share data between the JVM and other runtimes.
Big data from the LHC commissioning: practical lessons from big science - Sim...jaxLondonConference
Presented at JAX London 2013
The Large Hadron Collider experiments manage tens of petabytes of data spread across hundreds of data centres. Managing and processing this volume required significant infrastructure and novel software systems, involving years of R&D and significant commissioning to prepare for the LHC First Data. The evolution of this global computing infrastructure, and the specialisations made by the experiments, have lessons relevant for many commercial "big data" users.
How far have you got with learning about Cloud? Got your head around Platform as a Service? Understand what IaaS means? Can spell Docker? Working in a DevOps mode? It’s easy to focus on learning new technology but it’s time to take a step back and look at what the technical implications are when an application is heading to the cloud. In the world of the cloud the benefits are high but the economics (financial and technical) can be radically different. Learn more about these new realities and how they can change application design, deployment and support. The introduction of Cloud technologies and its rapid adoption creates new opportunities and challenges. Whether designer, developer or tester, this talk will help you to start thinking differently about Java and the Cloud.
Presented at JAX DE, 2016
All Change how the economics of Cloud will make you think differently about JavaSteve Poole
How far have you gotten with learning about the cloud? Got your head around platform as a service? Understand what IaaS means? Know how to spell Docker? It’s easy to focus on learning new technology, but it’s time to take a step back and look at what the technical implications are when an application is heading to the cloud. In the world of the cloud, the benefits are high but the economics (financial and technical) can be radically different. Learn about these new realities and how they can change application design, deployment, and support. Cloud technologies and their rapid adoption are creating new opportunities and challenges. Whether you’re a designer, developer, or tester, this session will help you start thinking differently about Java and the cloud.
Availability in a cloud native world v1.6 (Feb 2019)Haytham Elkhoja
Guidelines for mere mortals. These are a collection of guidelines picked up in the field... hopefully they would help developers and SREs building or modernizing apps ensuring the highest level of availability to their applications.
In this talk I give an overview of IBM's efforts to create a VM-agnostic toolkit of runtime components from the mature J9 Java Virtual Machine (JVM). I provide a summary of the motivations behind this project, talk about some important proof points with CPython and Ruby MRI, describe the motivations behind an open community for this technology, and discuss the many challenges with creating a runtime agnostic Just In Time compiler from the Testarossa Java JIT.
The development of a product from the point of view of a technician, starting from the concept, passing to the minimum viable till a management of a fully operational and deployed app.
Slide deck for my presentation on the Open Distribution Server Technology project during the 2017 Jamf Nation User Conference. A project to create an open source distribution server to replace the JDS.
Delivering Java Applications? Ensure Top Performance Every Time, with Intell...John Williams
From pilot to production, eG Enterprise empowers enterprise organizations to deliver a better user experience and increased ROI by delivering comprehensive, converged performance management of Java application services. With optimized Java platforms delivered through Zing, Azul Systems enables Java-based businesses to focus on functionality and long-term lower operating costs rather than daily firefighting. Together, eG Enterprise and Azul Systems offer a proven Java environment designed to optimize the deployment, management, and scale of Java application services.
View these slides from this webinar where Bala Vaidhinathan, CTO of eG Innovations and Simon Ritter, Deputy CTO of Azul Systems discuss how:
• Java Application Service Management can be simplified and made more cost-effective, while delivering a better user experience
• eG Enterprise enhancements provide insights into Java applications running on the Zing runtime
• eG Enterprise and Azul Zing working together in a production Java installation can reduce costs, optimize deployments and deliver optimum user satisfaction
Erik Costlow, Product Evangelist at Contrast Security, was Oracle's principal product manager for Java 8 and 9, focused on security and performance. His security expertise involves threat modeling, code analysis, and instrumentation of security sensors. He is working to broaden this approach to security with Contrast Security. Before becoming involved in technology, Erik was a circus performer who juggled fire on a three-wheel vertical unicycle.
Garbage Collection: the Useful Parts - Martijn Verburg & Dr John Oliver (jCla...jaxLondonConference
This presentation gives the busy Java/JVM developer an overview of how Garbage Collection in the JVM works and the common collectors that are used. We also cover how to read and interpret the scary log format and most importantly, offer strategies to deal with badly behaving memory (e.g. The dreaded OOME!).
Conflict Free Replicated Data-types in Eventually Consistent Systems - Joel J...jaxLondonConference
This talk was due to be presented at JAX London 2013, but the speaker was unfortunately unable to attend.
Distributed data stores give us increased availability, linear scalability, predictable latency and improved fault tolerance. The flip-side is having to deal with inconsistencies: most distributed databases will ask your application layer how to resolve such inconsistencies. Conflict-free Replicated Data Types (CRDTs) are a way for a distributed database, such as Riak, to resolve those inconsistencies logically and automatically. Unlike traditional data structures, there is always a single state on which they converge.
In this talk, I’ll look at the development of CRDTs from an academic project to implementation in Riak.
Real-world polyglot programming on the JVM - Ben Summers (ONEIS)jaxLondonConference
Presented at JAX London 2013
Java is not the only language! The JVM is a wonderful common runtime for a wide variety of languages. By using the right language for each task, you can deliver higher quality applications in less time.
The Spock unit testing framework is on the verge of a 1.0 release and has already proven itself to be the next generation thinking on how to test Java production code. One of the many ever present challenges to testing code is the ability to Mock classes which has simplified by Spock from a very early release. Recently added to Spock is the notion of Stubs and Spies. This sessions is designed to demonstrate proper unit testing technique showing off these new features along with a number of advanced Spock features.
The Java Virtual Machine is Over - The Polyglot VM is here - Marcus Lagergren...jaxLondonConference
Presented at JAX London 2013
Ever since Java’s inception, in 1995, people have been compiling languages that aren’t Java to bytecode and deploying them on the JVM. Lately we are seeing an explosion in JVM languages. This is partly, but not only, because of Java 7, the first JVM to ship with invokedynamic, which is a quantum leap in polyglot runtime implementation. This session explains why emerging language implementations are becoming more common and more feasible to implement on the JVM with satisfactory performance.
Java EE 7 Platform: Boosting Productivity and Embracing HTML5 - Arun Gupta (R...jaxLondonConference
Presented at JAX London 2013
The Java EE 7 platform focuses on Productivity and HTML5. JAX-RS 2 adds a new Client API to invoke the RESTful endpoints. JMS 2 is undergoing a complete overhaul to align with improvements in the Java language. The long awaited Batch Processing API and Concurrency API are also getting added to build applications using capabilities of the platform itself. Together these APIs will allow you to be more productive by simplifying enterprise development. WebSocket attempts to solve the issues and limitations of HTTP for real-time communication.
Presented at JAX London 2013
Clojure is the most interesting new language on the horizon, but many developers suffer from the Blub Paradox when they see the Lisp syntax. This talk introduces Clojure to developers who haven’t been exposed to it yet, focusing on the things that truly set it apart from other languages.
Presented at JAX London 2013
Test Driven Development is a practice generally endorsed by most people. However it is also one of the most difficult to get right. I am part of a very large project where we decided to use TDD from the very start. We encountered a number of challenges and learned a lot of lessons. We are still learning and evolving our approach to TDD. We discovered that doing TDD badly is actually worse than not doing TDD at all and that it is very important to get some basics rights otherwise you'll put yourself in a world of pain.
Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)jaxLondonConference
Presented at JAX London 2013
Public, private, and hybrid; software, platform, and infrastructure. This talk will discuss the current state of the Platform-as-a-Service space, and why the keys to success lie in enabling developer productivity, and providing openness and choice. We'll do this by considering the success of Open Source in general, look at the Cloud Foundry project, and find out why Cloud Foundry-based PaaSes are the best places to host your applications written in Java and other JVM-based languages.
Presented at JAX London 2013
This session shows you how Slick, the Scala database library, can bring your data seamlessly into your Scala application and compile Scala collection operations to database code for execution on the database server. There will be plenty of live coding that highlights the latest features such as distributed queries, macro-based type providers, and the use of non-SQL data stores.
Put your Java apps to sleep? Find out how - John Matthew Holt (Waratek)jaxLondonConference
Presented at JAX London 2013
Imagine if, when your applications weren't in use, they could go to sleep, just like your laptop does when idle. Just think how much money you could save on your infrastructure. The problem with many resource-intensive Java applications is that they are far more difficult to redeploy than they are to take down. Consequently applications tend to be left running whether they are being used or not.
Project Lambda: Functional Programming Constructs in Java - Simon Ritter (Ora...jaxLondonConference
Presented at JAX London 2013
The big language features for Java SE 8 are lambda expressions (closures) and default methods (formerly called defender methods or virtual extension methods). Adding lambda expressions to the language opens up a host of new expressive opportunities for applications and libraries. You might assume that lambda expressions are simply a more syntactically compact form of inner classes, but, in fact, the implementation of lambda expressions is substantially different and builds on the invokedynamic feature added in Java SE 7.
Do You Like Coffee with Your dessert? Java and the Raspberry Pi - Simon Ritte...jaxLondonConference
Presented at JAX London 2013
The Raspberry Pi has caused a huge wave of interest amongst developers, providing an ARM powered single board computer running a full Linux distro off an SD card and all for only $35! After an introduction to the Raspberry Pi and the ARM architecture, this session will look at how Java can be used on a device like this. Oracle have released an early access preview of JDK8 including JavaFX and a version of Java ME Embedded (3.3) tuned specifically for the Raspberry Pi.
Little words of wisdom for the developer - Guillaume Laforge (Pivotal)jaxLondonConference
Presented at JAX London 2013 Community Night
Through some famous quotes and pictures that will make you think, Guillaume Laforge, Head of Groovy Development for SpringSource, will illustrate some simple principles that he has followed on the projects he’s worked on, and walk through the lessons he’s learned throughout the journey. Guillaume is the official Groovy Project Manager, and the spec lead of JSR-241, the JSR that standardizes the Groovy dynamic language.
Large scale, interactive ad-hoc queries over different datastores with Apache...jaxLondonConference
Presented at JAX London 2013
Apache Drill is a distributed system for interactive ad-hoc query and analysis of large-scale datasets. It is the Open Source version of Google’s Dremel technology. Apache Drill is designed to scale to thousands of servers and able to process Petabytes of data in seconds, enabling SQL-on-Hadoop and supporting a variety of data sources.
Lambda Expressions: Myths and Mistakes - Richard Warburton (jClarity)jaxLondonConference
Presented at JAX London 2013
tl;dr - How will the everyday developer cope with Java 8’s Language changes?
Java 8 will ship with a powerful new abstraction - Lambda Expressions (aka Closures) and a completely retooled set of Collections libraries. In addition interfaces have changed through the addition of default and static methods. The ongoing debate as to whether Java should include such language changes has resulted in many vocal opinions being espoused. Sadly few of these opinions have been backed up by practical experimentation and experience. - Are these opinions just myths?
Designing Resilient Application Platforms with Apache Cassandra - Hayato Shim...jaxLondonConference
Presented at JAX London 2013
All too often I have observed infrastructure designs for deploying Java applications come as an afterthought by businesses, technical analysts, and application developers. Choices of technologies are frequently made with no final deployment infrastructures being discussed. The talk will cover the design considerations on building resilient applications, and application deployment platforms across multiple data centres, and how organisations can leverage technologies such as Apache Cassandra to achieve this.
Practical Performance: Understand the Performance of Your Application - Chris...jaxLondonConference
Presented at JAX London 2013
When you write and run Java code, the JVM makes several allocations on your behalf, but do you have an understanding of how much that is? This session provides insight into the memory usage of Java code, covering the memory overhead of putting int into an integer object and the cost of object delegation and the memory efficiency of the different collection types. It also gives you an understanding of the off-Java (native) heap memory usage of some types of Java objects, such as threads and sockets.
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
I have heard many times that architecture is not important for the front-end. Also, many times I have seen how developers implement features on the front-end just following the standard rules for a framework and think that this is enough to successfully launch the project, and then the project fails. How to prevent this and what approach to choose? I have launched dozens of complex projects and during the talk we will analyze which approaches have worked for me and which have not.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
The field of Information retrieval (IR) is currently undergoing a transformative shift, at least partly due to the emerging applications of generative AI to information access. In this talk, we will deliberate on the sociotechnical implications of generative AI for information access. We will argue that there is both a critical necessity and an exciting opportunity for the IR community to re-center our research agendas on societal needs while dismantling the artificial separation between the work on fairness, accountability, transparency, and ethics in IR and the rest of IR research. Instead of adopting a reactionary strategy of trying to mitigate potential social harms from emerging technologies, the community should aim to proactively set the research agenda for the kinds of systems we should build inspired by diverse explicitly stated sociotechnical imaginaries. The sociotechnical imaginaries that underpin the design and development of information access technologies needs to be explicitly articulated, and we need to develop theories of change in context of these diverse perspectives. Our guiding future imaginaries must be informed by other academic fields, such as democratic theory and critical theory, and should be co-developed with social science scholars, legal scholars, civil rights and social justice activists, and artists, among others.
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
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
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.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
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.
Let's dive deeper into the world of ODC! Ricardo Alves (OutSystems) will join us to tell all about the new Data Fabric. After that, Sezen de Bruijn (OutSystems) will get into the details on how to best design a sturdy architecture within ODC.
2. Important Disclaimers
THE INFORMATION CONTAINED IN THIS PRESENTATION IS PROVIDED FOR
INFORMATIONAL PURPOSES ONLY.
WHILST EFFORTS WERE MADE TO VERIFY THE COMPLETENESS AND ACCURACY OF THE
INFORMATION CONTAINED IN THIS PRESENTATION, IT IS PROVIDED “AS IS”, WITHOUT
WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.
ALL PERFORMANCE DATA INCLUDED IN THIS PRESENTATION HAVE BEEN GATHERED IN A
CONTROLLED ENVIRONMENT. YOUR OWN TEST RESULTS MAY VARY BASED ON
HARDWARE, SOFTWARE OR INFRASTRUCTURE DIFFERENCES.
ALL DATA INCLUDED IN THIS PRESENTATION ARE MEANT TO BE USED ONLY AS A GUIDE.
IN ADDITION, THE INFORMATION CONTAINED IN THIS PRESENTATION IS BASED ON IBM’S
CURRENT PRODUCT PLANS AND STRATEGY, WHICH ARE SUBJECT TO CHANGE BY IBM,
WITHOUT NOTICE.
IBM AND ITS AFFILIATED COMPANIES SHALL NOT BE RESPONSIBLE FOR ANY DAMAGES
ARISING OUT OF THE USE OF, OR OTHERWISE RELATED TO, THIS PRESENTATION OR
ANY OTHER DOCUMENTATION.
NOTHING CONTAINED IN THIS PRESENTATION IS INTENDED TO, OR SHALL HAVE THE
EFFECT OF:
- CREATING ANY WARRANT OR REPRESENTATION FROM IBM, ITS AFFILIATED
COMPANIES OR ITS OR THEIR SUPPLIERS AND/OR LICENSORS
3. Steve Poole
!
Works at IBM’s Hursley Laboratory in the UK
Involved in IBM Java VM development since before Java was 1
Currently leading IBM’s OpenJDK technical engagement
4. What this talk is about
!
!
!
!
JVM Support for Multi-Tenant Applications
This experimental technology is being developed to help address
important pressures on Java
!
Google ‘IBM Java 8 beta’ for more information
!
■
By the end of this session, you should be able to:
!
– Understand what multitenancy is and what it’s good for
!
– Describe the challenges of multitenant Java deployments
!
– Understand ideas for new JDK features to convert existing
applications into multitenant deployments
!
5. Agenda
1. What Multi-tenancy is all about aka how to simplify to save time
and money
2. The challenges of building a multi-tenant application in Java
3. How to keep your application running in a multi-tenant world dealing with bad behaviour
4. Risk vs. Reward: How dense can we go?
5. Wrap-up: Summary, and next steps
6. Part 1
What is Multitenancy?
!
(simplify to save time and money)
10. Who owns one of these?
At a basic level
Multitenancy is a drive to
reduce unnecessary
complexity and duplication
this is
sophisticated
but expensive
this is simpler
and cheaper
11. Who owns one of these?
At a basic level
Multitenancy is a drive to
reduce unnecessary
complexity and duplication
this is
sophisticated
but expensive
Multitenancy
helps with
finding the right
balance
this is simpler
and cheaper
12. Its not just a hardware story
Simplifying the software stack by removing all extraneous
pieces makes better use of hardware and the people who
run it.
!
Simple == Cheaper == Predictable == Robust
13. Simple
Dont Repeat Yourself
“Every piece of knowledge must have a single, unambiguous,
authoritative representation within a system”
Pragmatic Programmer (Hunt & Thomas)
(or: copy-and-paste encourages problems)
We want to avoid the clone army
14. Are you already using Multitenancy
•Are your choices only
•fully dedicated machine or shared hardware?
•Multitenancy isn’t just a checkbox.
•There are various levels of ‘tenancy’ defined today.
23. SaaS Tenancy Spectrum
Merging these bubbles saves money, reduces
complexity and can be a real business differentiator.
But it requires engineering effort
25. Efficencies
■
Customer viewpoint
!
– Cost: provider offers the service more cheaply
– Time to Value: up and running fast, typically
upgraded often & quickly
– Quality of Service: focus on SLA needed not your
ability to run infrastructure
– Bypass IT Backlog: streamlined deployment
(handled by provider)
!
■
Provider viewpoint
– Cost: Minimal moving parts / duplication
– Agility: Upgrades, backups, on-boarding
Fewer Parts == Better Density == £££ for the service provider
27. Climbing MT tenant
Increasing density of the software stack
is impacting us all.
!
Cost of hosting is a business
differentiator already
!
Its only going to increase in importance
!
If you’re in the cloud you already know
!
!
Moving from ‘free’ to ‘not free’ hosting is an intensive exercise.
Your software choices are starting to be decided by CPU and memory usage.
With your own hardware you could let it run slow. Can’t do that in the cloud!
!
So how do move forward with Java and Multitenancy?
28. Challenge #1 Isolation
The fear factor is loosing isolation
■ unexpected side effects from other parts
■ This is a reasonable concern
■ Same number of eggs (apps), fewer baskets
■ You want really good baskets arranged carefully
http://circa71.wordpress.com/2010/07/
■ But it’s not a new problem
■ We can reduce the change of failure (more later)
■ We can reduce the impact with good
choreography
■ You need to think about choreography today
■ Today we use clusters to provide fail-over and
arrange clusters to avoid same machine/rack/site
failures
http://bit.ly/e7G1jb
■ Apply the same ideas to Multitenancy
■
29. Challenge #2 Cost of Entry
merge
merge
J Hypervisor sharing only
simplest (hence most
popular) Still have
neighbours but they
are far away
J Port Collisions
J Data Isolation between apps
J File System Collisions
J Control over resource hogs
J Security Challenges
J Easy == No app changes
J JVM can help!!
Saves footprint (GB)
But now we have collisions
Ops guys can help with O/S
JVMs can use -Xshareclasses
More footprint savings
But now we have real isolation concerns
(closer neighbours)
We need control over resource hogs
30. Challenge #2.5 Building isolation
Java Heap consumes 100’s of MB of memory
–Heap objects cannot be shared between JVMs
–GC has a helper thread-per-core by default
Just-in-Time Compiler consumes 10’s of MB of memory
–Generated code is private and big
–Generated code is expensive to produce
• Steals time from application
• Multiple compilation threads by default
No choreography between JVM instances
–Compilation or GC activity can happen at identical (and bad) times
31. Challenge #2.5 Building isolation
We need to fix the following
!
L Data Isolation between applications
!
L Control over resource hogs
Without forcing people to change their applications!
32. Data Isolation Challenges
■
■
Applications embed deployment information like url patterns in code
Wait! What happens if we try to deploy two copies of this
servlet to a single server?
33. ■
Static variables are bad (for sharing)
■
Most libraries are full of static variables
Wait! What happens if
each tenant needs a
different default locale?
34. Wait! What happens if
each tenant needs a
different default locale?
•Usual solutions:
– Wrap the whole thing in a ClassLoader (i.e. rewrite your code)
– Get ride of the static variable (i.e. rewrite your code)
– Use BCI to rewrite the code automatically (erodes robustness)
!
!
We need a silver bullet!
35. Multitenant JDK
■
Concept: Add a single argument (–Xmt for multi-tenant) to
your Java command-line to opt into sharing a runtime with
others.
■
Result: Your application behaves exactly as it if had a
dedicated JVM, but in reality it runs side-by-side with other
applications.
■
Benefits: Smaller, faster, and eventually smarter
–Less duplication: (1 GC, 1 JIT), Heap object sharing
–Fast Startup: JVM is already running and warm when starting apps
■
Required: No code Changes!
38. Register with javad daemon
■
JVM will locate/start daemon automatically
locate
39. Create a new tenant
■
New tenant created inside the javad daemon
locate
Tenant1
40. Create a 2nd tenant
■
New tenant created inside the javad daemon
locate
Tenant1
41. Create a 2nd tenant
■
New tenant created inside the javad daemon
locate
Tenant1
Tenant2
One copy of common code
lives in the javad process.
Most runtime structures
are shared.
42. Providing data isolation
■
■
What if … the JVM knew about tenants and provided each one with a different view of
static variables?
Meet the @TenantScope annotation.
Tenant1
…
LocaleSettings.setDefaultLocale(
LocaleSettings.UK );
…
Tenant2
…
LocaleSettings.setDefaultLocale(
LocaleSettings.US );
…
■
@TenantScope Semantics: Static variable values are stored per-tenant
■
Each tenant has their own LocaleSettings.defaultLocale
■
Now many tenants can share a single LocaleSettings class
43. Did I say ‘no code changes?’
■
■
@TenantScope markup gets added automatically as classes are loaded
Tenants see dedicated middleware – but behind the curtains classes (and
JIT’ed code) are actually shared
Application
Changes
merge
44. If it’s invisible - why have @TenantScope?
Allows middleware to opt out
■ Opportunities for even more density.
■
!
■
Basic operations on Tenants available to the middleware
–Data Isolation
–Resource Management (more in this in a minute)
!
■
Ability for the middleware to differentiate between Tenants
–Which one is causing the problem?
!
■
Querying the state of Tenants
–How much free memory do you have?
46. Dealing with bad behaviour
http://bit.ly/ficwkl
images from http://www.rra.memberlodge.org/Neighbourhood-Watch-Reporting
47. Shared environments need resource ctl
The closer your neighbours the better your controls
must be
■ Multitenant JDK provides controls on
■
–CPU time
–Heap size
–Thread count
–File IO: read b/w, write b/w
–Socket IO: read b/w, write b/w
!
48. Resource Control Ergonomics
■
Simple command-line switches for new resources
– -Xlimit:cpu=10-30 // 10% minimum CPU, 30% max
// 30% max CPU
– -Xlimit:cpu=30
–-Xlimit:netIO=20M // Max bandwidth of 20 Mbps
■
Existing options get mapped for free
– -Xms8m –Xmx64m
■
// Initial 8M heap, 64M max
Plus some JMX beans to see how much of each resource you are
using
– i.e. understand how your code uses resources by wrapping in a tenant
49. Building on JSR 284
JSR-284 Resource Consumption Mgmt API
■
Throttling at Java layer for portability
■
Or, leveraging OS WLM directly for efficiency (Linux & AIX)
– Note: many WLMs tend to like processes, not groups of threads
Tenant
Tenant
Tenant
Tenant
Tenant
JVM Resource Management
JSR 284 API
JVM
Memory
CPU
GC
(Heap Mgmt)
Thread
File I/O
Socket I/O
CPU
File I/O
Socket I/O
Resource Throttle Layer
OS Level Resources Management
OS resources
Resource native API
OS
Thread
Handler
OS Workload Manager (WLM)
Socket
Hardware resources
CPU: XXX GHZ
Memory: XXX GB
DISK: XXXKB/S
Network: XXXKB/S
50. CPU Throttling
Round
1239s
1452s
1390s
1094s
1122s
1139s
1123s
6
1244s
1134s
Average
1243s
1212s
cpu throttling in jvm controller
90.00
60.00
67.50
cpu%
80.00
cpu%
1167s
5
cpu throttling in os controller
1267s
4
Accuracy
1362s
3
• Duration comparison: Linux AMD64, run a CPU-intensive app
with 10 threads with 100% CPU quota, each thread doing the
same Fibonacci calculation, benchmark the duration
• Accuracy comparison: Linux AMD64, run two CPU-intensive
apps each doing the same Fibonacci calculation, but with
different CPU quota: 60% vs 30%, benchmark the accuracy
JVM as controller
2
Benchmark setting
OS as controller
1
Duration
40.00
20.00
45.00
60% throttling
30% throttling
22.50
0.00
0.00
00:0000:3001:0001:3002:0002:3003:0003:3004:0004:3005:0005:3006:0006:3007:0007:3008:0008:3009:0009:30
00:0100:3101:0101:3102:0102:3103:0103:3104:0104:3105:0105:3106:0106:3107:0107:3108:0108:3109:0109:31
00:0200:3201:0201:3202:0202:3203:0203:3204:0204:3205:0205:3206:0206:3207:0207:3208:0208:3209:0209:32
00:0300:3301:0301:3302:0302:3303:0303:3304:0304:3305:0305:3306:0306:3307:0307:3308:0308:3309:0309:33
00:0400:3401:0401:3402:0402:3403:0403:3404:0404:3405:0405:3406:0406:3407:0407:3408:0408:3409:0409:34
00:0500:3501:0501:3502:0502:3503:0503:3504:0504:3505:0505:3506:0506:3507:0507:3508:0508:3509:0509:35
00:0600:3601:0601:3602:0602:3603:0603:3604:0604:3605:0605:3606:0606:3607:0607:3608:0608:3609:0609:36
00:0700:3701:0701:3702:0702:3703:0703:3704:0704:3705:0705:3706:0706:3707:0707:3708:0708:3709:0709:37
00:0800:3801:0801:3802:0802:3803:0803:3804:0804:3805:0805:3806:0806:3807:0807:3808:0808:3809:0809:38
00:0900:3901:0901:3902:0902:3903:0903:3904:0904:3905:0905:3906:0906:3907:0907:3908:0908:3909:0909:39
00:1000:4001:1001:4002:1002:4003:1003:4004:1004:4005:1005:4006:1006:4007:1007:4008:1008:4009:1009:40
00:1100:4101:1101:4102:1102:4103:1103:4104:1104:4105:1105:4106:1106:4107:1107:4108:1108:4109:1109:41
00:1200:4201:1201:4202:1202:4203:1203:4204:1204:4205:1205:4206:1206:4207:1207:4208:1208:4209:1209:42
00:1300:4301:1301:4302:1302:4303:1303:4304:1304:4305:1305:4306:1306:4307:1307:4308:1308:4309:1309:43
00:1400:4401:1401:4402:1402:4403:1403:4404:1404:4405:1405:4406:1406:4407:1407:4408:1408:4409:1409:44
00:1500:4501:1501:4502:1502:4503:1503:4504:1504:4505:1505:4506:1506:4507:1507:4508:1508:4509:1509:45
00:1600:4601:1601:4602:1602:4603:1603:4604:1604:4605:1605:4606:1606:4607:1607:4608:1608:4609:1609:46
00:1700:4701:1701:4702:1702:4703:1703:4704:1704:4705:1705:4706:1706:4707:1707:4708:1708:4709:1709:47
00:1800:4801:1801:4802:1802:4803:1803:4804:1804:4805:1805:4806:1806:4807:1807:4808:1808:4809:1809:48
00:1900:4901:1901:4902:1902:4903:1903:4904:1904:4905:1905:4906:1906:4907:1907:4908:1908:4909:1909:49
00:2000:5001:2001:5002:2002:5003:2003:5004:2004:5005:2005:5006:2006:5007:2007:5008:2008:5009:2009:50
00:2100:5101:2101:5102:2102:5103:2103:5104:2104:5105:2105:5106:2106:5107:2107:5108:2108:5109:2109:51
00:2200:5201:2201:5202:2202:5203:2203:5204:2204:5205:2205:5206:2206:5207:2207:5208:2208:5209:2209:52
00:2300:5301:2301:5302:2302:5303:2303:5304:2304:5305:2305:5306:2306:5307:2307:5308:2308:5309:2309:53
00:2400:5401:2401:5402:2402:5403:2403:5404:2404:5405:2405:5406:2406:5407:2407:5408:2408:5409:2409:54
00:2500:5501:2501:5502:2502:5503:2503:5504:2504:5505:2505:5506:2506:5507:2507:5508:2508:5509:2509:55
00:2600:5601:2601:5602:2602:5603:2603:5604:2604:5605:2605:5606:2606:5607:2607:5608:2608:5609:2609:56
00:2700:5701:2701:5702:2702:5703:2703:5704:2704:5705:2705:5706:2706:5707:2707:5708:2708:5709:2709:57
00:2800:5801:2801:5802:2802:5803:2803:5804:2804:5805:2805:5806:2806:5807:2807:5808:2808:5809:2809:58
00:2900:5901:2901:5902:2902:5903:2903:5904:2904:5905:2905:5906:2906:5907:2907:5908:2908:5909:29
00:0000:4201:2402:0602:4803:3004:1204:5405:3606:1807:0007:4208:2409:0609:48
00:0100:4301:2502:0702:4903:3104:1304:5505:3706:1907:0107:4308:2509:0709:49
00:0200:4401:2602:0802:5003:3204:1404:5605:3806:2007:0207:4408:2609:0809:50
00:0300:4501:2702:0902:5103:3304:1504:5705:3906:2107:0307:4508:2709:0909:51
00:0400:4601:2802:1002:5203:3404:1604:5805:4006:2207:0407:4608:2809:1009:52
00:0500:4701:2902:1102:5303:3504:1704:5905:4106:2307:0507:4708:2909:1109:53
00:0600:4801:3002:1202:5403:3604:1805:0005:4206:2407:0607:4808:3009:1209:54
00:0700:4901:3102:1302:5503:3704:1905:0105:4306:2507:0707:4908:3109:1309:55
00:0800:5001:3202:1402:5603:3804:2005:0205:4406:2607:0807:5008:3209:1409:56
00:0900:5101:3302:1502:5703:3904:2105:0305:4506:2707:0907:5108:3309:1509:57
00:1000:5201:3402:1602:5803:4004:2205:0405:4606:2807:1007:5208:3409:1609:58
00:1100:5301:3502:1702:5903:4104:2305:0505:4706:2907:1107:5308:3509:17
00:1200:5401:3602:1803:0003:4204:2405:0605:4806:3007:1207:5408:3609:18
00:1300:5501:3702:1903:0103:4304:2505:0705:4906:3107:1307:5508:3709:19
00:1400:5601:3802:2003:0203:4404:2605:0805:5006:3207:1407:5608:3809:20
00:1500:5701:3902:2103:0303:4504:2705:0905:5106:3307:1507:5708:3909:21
00:1600:5801:4002:2203:0403:4604:2805:1005:5206:3407:1607:5808:4009:22
00:1700:5901:4102:2303:0503:4704:2905:1105:5306:3507:1707:5908:4109:23
00:1801:0001:4202:2403:0603:4804:3005:1205:5406:3607:1808:0008:4209:24
00:1901:0101:4302:2503:0703:4904:3105:1305:5506:3707:1908:0108:4309:25
00:2001:0201:4402:2603:0803:5004:3205:1405:5606:3807:2008:0208:4409:26
00:2101:0301:4502:2703:0903:5104:3305:1505:5706:3907:2108:0308:4509:27
00:2201:0401:4602:2803:1003:5204:3405:1605:5806:4007:2208:0408:4609:28
00:2301:0501:4702:2903:1103:5304:3505:1705:5906:4107:2308:0508:4709:29
00:2401:0601:4802:3003:1203:5404:3605:1806:0006:4207:2408:0608:4809:30
00:2501:0701:4902:3103:1303:5504:3705:1906:0106:4307:2508:0708:4909:31
00:2601:0801:5002:3203:1403:5604:3805:2006:0206:4407:2608:0808:5009:32
00:2701:0901:5102:3303:1503:5704:3905:2106:0306:4507:2708:0908:5109:33
00:2801:1001:5202:3403:1603:5804:4005:2206:0406:4607:2808:1008:5209:34
00:2901:1101:5302:3503:1703:5904:4105:2306:0506:4707:2908:1108:5309:35
00:3001:1201:5402:3603:1804:0004:4205:2406:0606:4807:3008:1208:5409:36
00:3101:1301:5502:3703:1904:0104:4305:2506:0706:4907:3108:1308:5509:37
00:3201:1401:5602:3803:2004:0204:4405:2606:0806:5007:3208:1408:5609:38
00:3301:1501:5702:3903:2104:0304:4505:2706:0906:5107:3308:1508:5709:39
00:3401:1601:5802:4003:2204:0404:4605:2806:1006:5207:3408:1608:5809:40
00:3501:1701:5902:4103:2304:0504:4705:2906:1106:5307:3508:1708:5909:41
00:3601:1802:0002:4203:2404:0604:4805:3006:1206:5407:3608:1809:0009:42
00:3701:1902:0102:4303:2504:0704:4905:3106:1306:5507:3708:1909:0109:43
00:3801:2002:0202:4403:2604:0804:5005:3206:1406:5607:3808:2009:0209:44
00:3901:2102:0302:4503:2704:0904:5105:3306:1506:5707:3908:2109:0309:45
00:4001:2202:0402:4603:2804:1004:5205:3406:1606:5807:4008:2209:0409:46
00:4101:2302:0502:4703:2904:1104:5305:3506:1706:5907:4108:2309:0509:47
time
time
os throttling
jvm throttling
Result: JVM control achieves comparable performance, but less accuracy.
52. Current Performance Data
■
Environment: Measure standard benchmarks in a 1 GB + 1
core VirtualBox guest
– Advantage: Easy to control, highly reproducible
■
Methodology: Add applications until the system swaps, then
it’s ‘full’
– More applications is better
– Per tenant cost is amount of RAM / # tenants
57. This is still ‘experimental’
■
Focus to date has been ‘zero application changes’
– We can do even better with tenant-aware middleware
■
API’s used to provide isolation & throttling are available to stack
products
– JSR-284 (Resource Management)
– JSR-121 (Isolates)
– @TenantScope fields
■
Java language and frameworks (EclipseLink) are evolving to have
first-class multitenant support
■
Stay tuned for progress: watch the IBM Java 8 beta program
58. This is still ‘experimental’
Simplifying the software stack by removing all extraneous pieces
makes better use of hardware (and people who run it).
!
Multitenancy can make us more efficient:
–Trades isolation for footprint and agility
–JVM support makes multitenancy safer and easier
–Measuring resource usage and load patterns is critical
–Multitenant JDK primitives give us room for future growth
59. Conclusion
Now that you’ve completed this session, you are able to:
– Understand what multitenancy is and what it’s good for
• Per-tenant costs measured in single-digit MB are possible
– Describe challenges of multitenant Java deployments
• Hard for VM guys, should be easy for you
• Choreography of load / deployment is up to you
– Understand new JDK features to convert existing applications into
multitenant deployments
• Are we on the right track? Could you use this in your business?
Thank you - any questions?