This document discusses the challenges of creating a GlassFish buildpack for Cloud Foundry. It summarizes the key changes needed to port the GlassFish application server to the Cloud Foundry platform, including modifying the context root to match Cloud Foundry standards, changing logging to output to standard out, and loosely coupling the application with database configuration by reading environment variables rather than a config file. Examples are provided of accessing database connection information from environment variables and using auto binding of services to inject datasources. The goal of the buildpack is to help migrate enterprise Java applications using GlassFish from on-premise to cloud environments.
OSGi-enabled Java EE Applications using GlassFishArun Gupta
The document discusses OSGi-enabled Java EE applications in GlassFish. It provides an overview of OSGi and how it is used in GlassFish to create modular applications. Key points include:
- OSGi allows applications to be broken into bundles that can be installed, uninstalled, started and stopped dynamically.
- GlassFish runs on top of OSGi and all GlassFish modules are OSGi bundles. This allows for a modular platform and custom application servers.
- OSGi specifications like Declarative Services allow OSGi services to be used in Java EE applications through JNDI lookups.
- Hybrid applications can be both OSGi bundles and Java EE archives, leveraging capabilities of both platforms.
This document provides an overview and list of C# tutorials, including introductions to C# code, system members, arrays, enums, value types, constructors, static keywords, inheritance, polymorphism, interfaces, delegates, events, multithreading, and networking. It also discusses using the C# compiler and command line arguments. The tutorials cover basic C# syntax and programming concepts.
This document discusses tools and techniques for troubleshooting Java applications. It begins with an introduction to the speaker, Chris Bailey, and his background in Java monitoring and diagnostics. It then covers various approaches for monitoring memory usage at both the operating system and Java runtime levels, including tools for capturing garbage collection data and heap dumps. Finally, it discusses performance analysis and profiling CPU and lock usage at the application level.
Inside Android's Dalvik VM - NEJUG Nov 2011Doug Hawkins
In this presentation, Doug Hawkins will discuss how the Dalvik VM is different from traditional Java VMs and the motivations behind those differences. Along the way, you'll learn about Android's service architecture, Dalvik's byte code format, and the surprising details of how Android installs, launches, and executes applications.
IBM InterConnect: Java vs JavaScript for Enterprise WebAppsChris Bailey
The last few years have see a huge growth in the usage of JavaScript, to the extent that it is often reported to be the #1 programming language in use today. Additionally, the arrival of server-side JavaScript through frameworks such as Node.js and Ringo.js, and JavaScript on the JVM through Nashorn and Avatar.js, mean that enterprise web applications written in JavaScript are not just a possibility—but a reality for companies such as LinkedIn, eBay, Yahoo, ADP and Dow Jones. This session will compare and contrast the two platforms and describe the advantages of each for deploying, managing and monitoring highly scalable applications. It will also introduce IBM's strategy for building a common ecosystem around the two languages.
Presented at IBM InterConnect, Feb 25th, 2015
Hangs, Slowdowns, Starvation—Oh My! A Deep Dive into the Life of a Java Threa...David Buck
Why aren’t your threads behaving? Although most developers are confident about handling better-known issues such as deadlocks and simple hangs, many people still come across liveness issues that are not always easy to identify and resolve. From complete hangs that bring your application to a halt, to scalability issues, there are all sorts of things that go bump in the night. This session explores the most common types of things that can prevent your Java threads from getting work done and shows how to address them.
Rational Performance Tester (RPT) is a tool for performance testing web applications. It can simulate thousands of virtual users to test an application's performance and scalability. RPT works with many web technologies and protocols. It allows recording and playback of tests, monitoring of system resources, and real-time reporting of performance metrics. The presentation provided an overview of RPT's features and capabilities. It also included tips and best practices for creating tests, configuring agents and drivers, and optimizing performance.
Life after Java - Reusing Code and Skills in a .NET world / presentation at ITProDevConnections 2010 - http://www.itprodevconnections.gr
Java EE 7: Whats New in the Java EE Platform @ Devoxx 2013Arun Gupta
The document discusses the new features in Java EE 7 platform. Some of the key highlights include:
- Enhancements to CDI, Bean Validation, Interceptors, Concurrency utilities.
- JPA 2.1 features like schema generation, stored procedures, converters.
- JTA 1.2 allows transaction management on CDI managed beans.
- EJB 3.2 includes features like disabling passivation for stateful sessions, asynchronous methods and non-persistent timers.
- Other specifications like JMS 2.0, JAX-RS 2.0 that are part of Java EE 7 platform.
Java EE 7: Boosting Productivity and Embracing HTML5Arun Gupta
The document discusses the key features of Java EE 7 including improved developer productivity through more annotated POJOs, less boilerplate code, and a cohesive integrated platform. It highlights top features such as WebSocket client/server endpoints, batch applications, JSON processing, concurrency utilities, simplified JMS API, and more annotated POJOs. The document provides details on these features and code examples for concepts like WebSocket chat servers, JSON streaming API, batch job specification, and simplified JMS message sending.
[1D6]RE-view of Android L developer PRE-viewNAVER D2
The document discusses key architectural changes and performance improvements in Android L, including:
1. The introduction of a separate UI and render thread to improve responsiveness.
2. A move from just-in-time (JIT) compilation to ahead-of-time (AOT) compilation with the new Android Runtime (ART) to boost performance.
3. Enhancements to the garbage collection model to reduce pause times and fragmentation.
The document discusses common multi-threaded performance issues, including a case study where a CORBA/C++ server's throughput decreased as more CPUs were added. This was due to cache consistency overhead from frequent mutex lock/unlock calls across CPUs, and unfair mutex wakeup semantics allowing long waits. The issues can be addressed by limiting thread pools, using multiple processes each bound to a CPU, and minimizing mutex usage.
This document discusses debugging applications and products using dumps. It describes two common debugging strategies: debugging from trace and debugging from dumps. When debugging from dumps, all available data is collected on failure with no ongoing performance overhead, but there is limited history and context. The document discusses different dump types (PHD, HPROF, system dump), methods for generating dumps (interactive, event-based, programmatic), and tools for analyzing dumps like IBM Monitoring and Diagnostic Tools for Java - Memory Analyzer and IDDE.
Throwing complexity over the wall: Rapid development for enterprise Java (Jav...Dan Allen
For many, development of enterprise Java has long been an arduous undertaking. We're of the opinion that application programmers should be free to focus on their business logic only.
In this session, we'll cover:
• What makes us most productive?
• What tasks should we be programming; more importantly, what shouldn't we?
• What is a component model, and what does it buy us?
• How is this stuff usable in the real world?
We'll discuss how testing relates to the features of the Java EE 6 stack. By the end, we'll have introduced a pair of simple and powerful frameworks that render the testing of real enterprise components as natural as calling "add" on a CS101 Calculator.java.
The document provides an overview of OSGi, including:
- OSGi addresses issues with dependency management, dynamic behavior, and lack of modularity in Java applications.
- The OSGi solution introduces bundles as deployable modules with their own classloaders, lifecycles, and explicit dependencies.
- Services allow bundles to dynamically publish and discover capabilities, enabling loose coupling between bundles.
- Popular OSGi implementations include Equinox, Felix, and Knopflerfish, while tools like m2eclipse help integrate OSGi with Maven builds.
The document provides information about using the Native Development Kit (NDK) to build native code for Android applications. It discusses what the NDK is, why developers may want to use native code, and how to set up a sample project to call native code from Java using the Java Native Interface (JNI). The sample project implements Fibonacci functions recursively and iteratively in both Java and C++ to demonstrate how to define and call native functions from an Android app.
Using the Android Native Development Kit (NDK)DroidConTLV
Android NDK is used to integrate C/C++ code into Android applications. Learn when and how to use it ; and what it implies to do so from development, integration within Eclipse and Android Studio, to distribution.
Infrastructure as Code in your CD pipelines - London Microsoft DevOps 0423Giulio Vian
London Microsoft DevOps 23 April 2018 Meetup (https://www.meetup.com/London-Microsoft-DevOps/events/249114256/)
Infrastructure as Code in your CD pipelines
from VMs to Containers
He is going to cover the Journey of agile transformation in a non-IT company, bringing in Continuous Delivery, traditional infrastructure and modern cloud DevOps practices.
In this talk, you will hear about the DevOps journey in his company (Glass, Lewis & Co.), from the initial brown-field all-manual state to the current partially automated situation and the strategic destination of a fully automated and monitored process.
In an equilibrium between a high-level view and useful practical tips, he will touch on what informed their decisions, in terms of priorities and technologies, some lessons learned in setting up Infrastructure-as-Code using Terraform for Azure, and how the legacy constraints helped or hindered them on this journey.
Using the Android Native Development Kit (NDK)Xavier Hallade
This document discusses using the Android Native Development Kit (NDK) to incorporate native code into Android apps. It covers:
- What the NDK is and why developers use it (for performance, differentiation, code reuse)
- How to install and set up the NDK
- Integrating native C/C++ code with Java using the Java Native Interface (JNI)
- Debugging native code using logcat and GDB
- Supporting multiple CPU architectures by configuring the APP_ABI variable
Fifty Features of Java EE 7 in 50 Minutesglassfish
This document outlines 50 new features of Java EE 7 presented in 50 minutes. It begins with an overview listing the Java EE 7 specifications that have new features, such as JAX-RS 2.0, JSON-P 1.0, CDI 1.1, Bean Validation 1.1, Interceptors 1.2, Concurrency Utilities 1.0, JPA 2.1, JTA 1.2, and others. It then proceeds to briefly describe 16 new features across these specifications, including default CDI enabling, method validation in Bean Validation, interceptor bindings with priority in Interceptors, managed executors and scheduled executors in Concurrency Utilities, and schema generation and stored procedures in JPA.
The document provides instructions for running an Intel DPDK hands-on session to demonstrate packet forwarding using the l3fwd example. It describes downloading and compiling DPDK, getting and applying patches to l3fwd, configuring three VMs with pktgen to generate and receive packets and l3fwd to forward between them, and running l3fwd and pktgen manually or automatically on system startup.
JSR-299 (CDI), Weld & the Future of Seam (JavaOne 2010)Dan Allen
Introduces JSR-299, the new Java standard for contextual lifecycle management, dependency injection (CDI) and event notification. Covers the core programming model, explains its relationship to EJB 3.1 and JSF 2.0, and clarifies how it unifies and enhances the Java EE platform as a whole (extending to JPA, JAX-RS and JMS). You are then introduced to Weld, the JSR-299 Reference Implementation, and its Servlet container and Java SE extensions. Finally, looks ahead at how a modularized Seam 3 ties into this new foundation as a set of portable CDI extensions.
Linaro's mission is to make it easier and quicker for ARM partners to deploy the latest technology into optimized Linux based products. This presentation covers the basic work from Linaro Android platform team.
Java 9 introduces several new features including modularity, which addresses issues with Java's classpath by allowing stricter control over dependencies and visibility. It also includes a new shell/REPL tool called jshell for interactive programming, and improvements to the collections API. Project Jigsaw implements modularity through modules that encapsulate internal APIs and enable the creation of customized runtime images using a new tool called jlink.
The QualiPSo Factory provides a component model for developing collaborative services easily. It allows service developers to reuse core services for authentication, access control, and more. Developers can create new collaborative services and compose them with existing services. The factory also provides a methodology for developing user interface components in a similar way so that services and UIs can be assembled together uniformly.
Spring Boot is a framework for creating stand-alone, production-grade Spring based applications that can be "just run". It aims to provide a radically faster and widely accessible starting experience for developing Spring applications. Spring Boot applications can be started using java -jar or traditional WAR deployments and require very little Spring configuration. The document then discusses system requirements, development environment, creating a simple Hello World application, using Spring Boot Admin to monitor applications, configuring databases, Spring Data JPA, REST controllers, caching with EhCache, building web applications with Thymeleaf, and project structure.
Rational Performance Tester (RPT) is a tool for performance testing web applications. It can simulate thousands of virtual users to test an application's performance and scalability. RPT works with many web technologies and protocols. It allows recording and playback of tests, monitoring of system resources, and real-time reporting of performance metrics. The presentation provided an overview of RPT's features and capabilities. It also included tips and best practices for creating tests, configuring agents and drivers, and optimizing performance.
Life after Java - Reusing Code and Skills in a .NET world / presentation at ITProDevConnections 2010 - http://www.itprodevconnections.gr
Java EE 7: Whats New in the Java EE Platform @ Devoxx 2013Arun Gupta
The document discusses the new features in Java EE 7 platform. Some of the key highlights include:
- Enhancements to CDI, Bean Validation, Interceptors, Concurrency utilities.
- JPA 2.1 features like schema generation, stored procedures, converters.
- JTA 1.2 allows transaction management on CDI managed beans.
- EJB 3.2 includes features like disabling passivation for stateful sessions, asynchronous methods and non-persistent timers.
- Other specifications like JMS 2.0, JAX-RS 2.0 that are part of Java EE 7 platform.
Java EE 7: Boosting Productivity and Embracing HTML5Arun Gupta
The document discusses the key features of Java EE 7 including improved developer productivity through more annotated POJOs, less boilerplate code, and a cohesive integrated platform. It highlights top features such as WebSocket client/server endpoints, batch applications, JSON processing, concurrency utilities, simplified JMS API, and more annotated POJOs. The document provides details on these features and code examples for concepts like WebSocket chat servers, JSON streaming API, batch job specification, and simplified JMS message sending.
[1D6]RE-view of Android L developer PRE-viewNAVER D2
The document discusses key architectural changes and performance improvements in Android L, including:
1. The introduction of a separate UI and render thread to improve responsiveness.
2. A move from just-in-time (JIT) compilation to ahead-of-time (AOT) compilation with the new Android Runtime (ART) to boost performance.
3. Enhancements to the garbage collection model to reduce pause times and fragmentation.
The document discusses common multi-threaded performance issues, including a case study where a CORBA/C++ server's throughput decreased as more CPUs were added. This was due to cache consistency overhead from frequent mutex lock/unlock calls across CPUs, and unfair mutex wakeup semantics allowing long waits. The issues can be addressed by limiting thread pools, using multiple processes each bound to a CPU, and minimizing mutex usage.
This document discusses debugging applications and products using dumps. It describes two common debugging strategies: debugging from trace and debugging from dumps. When debugging from dumps, all available data is collected on failure with no ongoing performance overhead, but there is limited history and context. The document discusses different dump types (PHD, HPROF, system dump), methods for generating dumps (interactive, event-based, programmatic), and tools for analyzing dumps like IBM Monitoring and Diagnostic Tools for Java - Memory Analyzer and IDDE.
Throwing complexity over the wall: Rapid development for enterprise Java (Jav...Dan Allen
For many, development of enterprise Java has long been an arduous undertaking. We're of the opinion that application programmers should be free to focus on their business logic only.
In this session, we'll cover:
• What makes us most productive?
• What tasks should we be programming; more importantly, what shouldn't we?
• What is a component model, and what does it buy us?
• How is this stuff usable in the real world?
We'll discuss how testing relates to the features of the Java EE 6 stack. By the end, we'll have introduced a pair of simple and powerful frameworks that render the testing of real enterprise components as natural as calling "add" on a CS101 Calculator.java.
The document provides an overview of OSGi, including:
- OSGi addresses issues with dependency management, dynamic behavior, and lack of modularity in Java applications.
- The OSGi solution introduces bundles as deployable modules with their own classloaders, lifecycles, and explicit dependencies.
- Services allow bundles to dynamically publish and discover capabilities, enabling loose coupling between bundles.
- Popular OSGi implementations include Equinox, Felix, and Knopflerfish, while tools like m2eclipse help integrate OSGi with Maven builds.
The document provides information about using the Native Development Kit (NDK) to build native code for Android applications. It discusses what the NDK is, why developers may want to use native code, and how to set up a sample project to call native code from Java using the Java Native Interface (JNI). The sample project implements Fibonacci functions recursively and iteratively in both Java and C++ to demonstrate how to define and call native functions from an Android app.
Using the Android Native Development Kit (NDK)DroidConTLV
Android NDK is used to integrate C/C++ code into Android applications. Learn when and how to use it ; and what it implies to do so from development, integration within Eclipse and Android Studio, to distribution.
Infrastructure as Code in your CD pipelines - London Microsoft DevOps 0423Giulio Vian
London Microsoft DevOps 23 April 2018 Meetup (https://www.meetup.com/London-Microsoft-DevOps/events/249114256/)
Infrastructure as Code in your CD pipelines
from VMs to Containers
He is going to cover the Journey of agile transformation in a non-IT company, bringing in Continuous Delivery, traditional infrastructure and modern cloud DevOps practices.
In this talk, you will hear about the DevOps journey in his company (Glass, Lewis & Co.), from the initial brown-field all-manual state to the current partially automated situation and the strategic destination of a fully automated and monitored process.
In an equilibrium between a high-level view and useful practical tips, he will touch on what informed their decisions, in terms of priorities and technologies, some lessons learned in setting up Infrastructure-as-Code using Terraform for Azure, and how the legacy constraints helped or hindered them on this journey.
Using the Android Native Development Kit (NDK)Xavier Hallade
This document discusses using the Android Native Development Kit (NDK) to incorporate native code into Android apps. It covers:
- What the NDK is and why developers use it (for performance, differentiation, code reuse)
- How to install and set up the NDK
- Integrating native C/C++ code with Java using the Java Native Interface (JNI)
- Debugging native code using logcat and GDB
- Supporting multiple CPU architectures by configuring the APP_ABI variable
Fifty Features of Java EE 7 in 50 Minutesglassfish
This document outlines 50 new features of Java EE 7 presented in 50 minutes. It begins with an overview listing the Java EE 7 specifications that have new features, such as JAX-RS 2.0, JSON-P 1.0, CDI 1.1, Bean Validation 1.1, Interceptors 1.2, Concurrency Utilities 1.0, JPA 2.1, JTA 1.2, and others. It then proceeds to briefly describe 16 new features across these specifications, including default CDI enabling, method validation in Bean Validation, interceptor bindings with priority in Interceptors, managed executors and scheduled executors in Concurrency Utilities, and schema generation and stored procedures in JPA.
The document provides instructions for running an Intel DPDK hands-on session to demonstrate packet forwarding using the l3fwd example. It describes downloading and compiling DPDK, getting and applying patches to l3fwd, configuring three VMs with pktgen to generate and receive packets and l3fwd to forward between them, and running l3fwd and pktgen manually or automatically on system startup.
JSR-299 (CDI), Weld & the Future of Seam (JavaOne 2010)Dan Allen
Introduces JSR-299, the new Java standard for contextual lifecycle management, dependency injection (CDI) and event notification. Covers the core programming model, explains its relationship to EJB 3.1 and JSF 2.0, and clarifies how it unifies and enhances the Java EE platform as a whole (extending to JPA, JAX-RS and JMS). You are then introduced to Weld, the JSR-299 Reference Implementation, and its Servlet container and Java SE extensions. Finally, looks ahead at how a modularized Seam 3 ties into this new foundation as a set of portable CDI extensions.
Linaro's mission is to make it easier and quicker for ARM partners to deploy the latest technology into optimized Linux based products. This presentation covers the basic work from Linaro Android platform team.
Java 9 introduces several new features including modularity, which addresses issues with Java's classpath by allowing stricter control over dependencies and visibility. It also includes a new shell/REPL tool called jshell for interactive programming, and improvements to the collections API. Project Jigsaw implements modularity through modules that encapsulate internal APIs and enable the creation of customized runtime images using a new tool called jlink.
The QualiPSo Factory provides a component model for developing collaborative services easily. It allows service developers to reuse core services for authentication, access control, and more. Developers can create new collaborative services and compose them with existing services. The factory also provides a methodology for developing user interface components in a similar way so that services and UIs can be assembled together uniformly.
Spring Boot is a framework for creating stand-alone, production-grade Spring based applications that can be "just run". It aims to provide a radically faster and widely accessible starting experience for developing Spring applications. Spring Boot applications can be started using java -jar or traditional WAR deployments and require very little Spring configuration. The document then discusses system requirements, development environment, creating a simple Hello World application, using Spring Boot Admin to monitor applications, configuring databases, Spring Data JPA, REST controllers, caching with EhCache, building web applications with Thymeleaf, and project structure.
Gunnar Hillert developed the jRecruiter job posting application over several years using Java technologies like Spring, Struts, Hibernate, and Maven. jRecruiter integrates with services like Google Maps, Twitter, bit.ly, and reCAPTCHA. It supports internationalization, security best practices, data migration, and feeds. Hillert discussed architecture details and encouraged questions.
This document provides an overview of Spring Boot, a framework for creating stand-alone, production-grade Spring based applications. It discusses how Spring Boot aims to make it easy to create Spring applications with default configurations and minimal code. The key topics covered include: using Maven and Gradle build tools with Spring Boot, common features and conventions like auto-configuration and main application classes, Spring Data and JPA for database access, Spring MVC features for web applications, and testing Spring applications.
Modular Test-driven SPAs with Spring and AngularJSGunnar Hillert
The document discusses creating modular test-driven single page applications (SPAs) using Spring and AngularJS. It provides an overview of AngularJS concepts and how to integrate AngularJS with Spring, including building and deploying AngularJS apps, modularization, and testing. It also covers AngularJS basics like models, views, controllers, directives, and modules.
This document provides an overview and introduction to Spring Boot. It discusses:
- The goals of Spring Boot to provide a faster setup process and default configurations without needing XML.
- Key features like auto-configuration, embedded servlet containers, and the use of starters for common dependencies.
- Conventions for project structure, main application classes, and defining beans.
- How to configure databases, implement JPA repositories, and build REST APIs with Spring MVC and data REST.
- Tips for testing Spring applications and building executable JAR files for deployment.
This document provides an overview and introduction to Spring Boot. It discusses:
- The goals of Spring Boot to provide a faster setup process and default configurations without needing XML.
- Key features like auto-configuration, embedded servlet containers, and the use of starters for common dependencies.
- Conventions in Spring Boot for project structure, main classes, configuration properties, and more.
- How to set up a Spring Boot project using Maven, including using the spring-boot-starter-parent and starter POMs.
- Support in Spring Boot for Spring MVC, data access with JPA/Spring Data, REST services, and testing.
This document discusses how to connect logs to various network services using Logback. It begins with a brief introduction of common logging frameworks like SLF4J, Log4j 1, Log4j 2 and Logback. It then explains Logback's internal architecture including loggers, appenders and layouts. The main part demonstrates how to develop a custom appender in Logback to send logs to network services by utilizing the ILoggingEvent object. It provides code templates and examples of accessing log content and stack traces. Finally, it introduces some open source Logback appenders and the Logpush service for remote log monitoring.
This document provides an overview of how to build a full stack API with DevOps integration using Quarkus in under an hour. It discusses APIs in microservice architectures, Quarkus advantages over other frameworks, and includes demos on building the first Quarkus API, adding fault tolerance, observability, logging, persistence, and security. The agenda covers asynchronous and synchronous communication patterns, MicroProfile basics, Quarkus benefits like performance and container support, JAX-RS annotations, and using various Quarkus extensions for fault tolerance, OpenTelemetry, logging, databases, Hibernate ORM with Panache, and OAuth security.
Dropwizard is a Java framework for building RESTful web services. It supports microservices architecture and includes modules for common functions like authentication, database access, metrics collection, and health checks. Developers define resources, configure the application via YAML, integrate with databases via JDBI, and build representations with Jackson. It aims to provide a productive full-stack framework for building microservices.
Spring batch for large enterprises operations Ignasi González
Spring Batch is a framework for writing batch applications in Java. It was designed to be integrated with Spring and supports features like dependency injection, transactions, and job processing. The document discusses two examples of large enterprises using Spring Batch: a bank undergoing a migration to a new mid-level system and an energy company with multiple software vendors. It describes how Spring Batch was used to integrate batch jobs, monitor executions, and facilitate the migration process at both companies.
This document provides an overview of developing a web application using Spring Boot that connects to a MySQL database. It discusses setting up the development environment, the benefits of Spring Boot, basic project structure, integrating Spring MVC and JPA/Hibernate for database access. Code examples and links are provided to help get started with a Spring Boot application that reads from a MySQL database and displays the employee data on a web page.
React is a UI library that is changing the way web applications are written. While there are many benefits to using React, managing an application's complexity as it scales is one of the most powerful.
A complete boot camp for beginners who want to learn Spring Boot.
In this course, you'll learn how we can create web services and cover all the topics of Spring Boot, Spring Framework, and many others.
If you've some experience in Java and want to be a Software Engineer or Java Developer using Spring, you're on right way.
Just read and practice, in the end of this course you'll have a great knowledge of Spring boot, a backend knowledge.
Course outline:
JPA, Hibernate, Spring, Spring Framework, H2 Database, PostgreSQL, MySQL.
#SpringBoot
#SpringFramwork
#MySQL
#PostgreSQL
#MySQL
#H2
#JPA/Hibernate
#Webservices
Slides from my talk on #ruby-mg meeting.
Intro about how we in catars.me are using postgREST to create fast and simple API that can be represented with various mithril.js components.
Building a Spring Boot Application - Ask the Audience!🎤 Hanno Embregts 🎸
This document provides an overview of building applications with Spring Boot. It discusses key features such as creating stand-alone Spring applications without separate web servers, automatic Spring configuration, and getting started quickly with one Java file and a build script. Pros include faster deployments and no need for web.xml files. Cons can include custom configuration challenges and incompatibility with some legacy Spring projects. The document also demonstrates sample code and references Spring Initializr for project setups.
The document discusses Spring Framework and annotations-based configuration in Spring. It covers:
- Enabling annotation-based configuration by adding <context:annotation-config/> to the XML file.
- Common annotations like @Autowired, @Component, @Value that can be used for dependency injection and configuration.
- How to implement autowiring by type, name and constructor.
- Other annotations like @PostConstruct, @PreDestroy for lifecycle callbacks.
- Stereotype annotations @Controller, @Service, @Repository that can be used instead of defining beans explicitly.
- Spring validation support using Validator interface, validation annotations and implementing custom validators.
- Spring
This document introduces AngularBeans, which aims to integrate AngularJS with Java EE backends using CDI. Some key points:
- AngularBeans allows defining Angular services using CDI beans, and enables features like dependency injection, JSON-RPC calls, and real-time capabilities between the frontend and backend.
- It supports concepts of single-page applications and thin server architectures. AngularBeans services can make HTTP requests, handle events, and communicate over websockets.
- Examples show how to create an AngularBean that exposes methods to the frontend, handle requests and return responses, access the backend via JSON-RPC calls, and implement real-time functionality using events and websockets.
What AI Means For Your Product Strategy And What To Do About ItVMware Tanzu
The document summarizes Matthew Quinn's presentation on "What AI Means For Your Product Strategy And What To Do About It" at Denver Startup Week 2023. The presentation discusses how generative AI could impact product strategies by potentially solving problems companies have ignored or allowing competitors to create new solutions. Quinn advises product teams to evaluate their strategies and roadmaps, ensure they understand user needs, and consider how AI may change the problems being addressed. He provides examples of how AI could influence product development for apps in home organization and solar sales. Quinn concludes by urging attendees not to ignore AI's potential impacts and to have hard conversations about emerging threats and opportunities.
Make the Right Thing the Obvious Thing at Cardinal Health 2023VMware Tanzu
This document discusses the evolution of internal developer platforms and defines what they are. It provides a timeline of how technologies like infrastructure as a service, public clouds, containers and Kubernetes have shaped developer platforms. The key aspects of an internal developer platform are described as providing application-centric abstractions, service level agreements, automated processes from code to production, consolidated monitoring and feedback. The document advocates that internal platforms should make the right choices obvious and easy for developers. It also introduces Backstage as an open source solution for building internal developer portals.
Enhancing DevEx and Simplifying Operations at ScaleVMware Tanzu
Cardinal Health introduced Tanzu Application Service in 2016 and set up foundations for cloud native applications in AWS and later migrated to GCP in 2018. TAS has provided Cardinal Health with benefits like faster development of applications, zero downtime for critical applications, hosting over 5,000 application instances, quicker patching for security vulnerabilities, and savings through reduced lead times and staffing needs.
Dan Vega discussed upcoming changes and improvements in Spring including Spring Boot 3, which will have support for JDK 17, Jakarta EE 9/10, ahead-of-time compilation, improved observability with Micrometer, and Project Loom's virtual threads. Spring Boot 3.1 additions were also highlighted such as Docker Compose integration and Spring Authorization Server 1.0. Spring Boot 3.2 will focus on embracing virtual threads from Project Loom to improve scalability of web applications.
Platforms, Platform Engineering, & Platform as a ProductVMware Tanzu
This document discusses building platforms as products and reducing developer toil. It notes that platform engineering now encompasses PaaS and developer tools. A quote from Mercedes-Benz emphasizes building platforms for developers, not for the company itself. The document contrasts reactive, ticket-driven approaches with automated, self-service platforms and products. It discusses moving from considering platforms as a cost center to experts that drive business results. Finally, it provides questions to identify sources of developer toil, such as issues with workstation setup, running software locally, integration testing, committing changes, and release processes.
This document provides an overview of building cloud-ready applications in .NET. It defines what makes an application cloud-ready, discusses common issues with legacy applications, and recommends design patterns and practices to address these issues, including loose coupling, high cohesion, messaging, service discovery, API gateways, and resiliency policies. It includes code examples and links to additional resources.
Dan Vega discussed new features and capabilities in Spring Boot 3 and beyond, including support for JDK 17, Jakarta EE 9, ahead-of-time compilation, observability with Micrometer, Docker Compose integration, and initial support for Project Loom's virtual threads in Spring Boot 3.2 to improve scalability. He provided an overview of each new feature and explained how they can help Spring applications.
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfVMware Tanzu
Spring Cloud Gateway is a gateway that provides routing, security, monitoring, and resiliency capabilities for microservices. It acts as an API gateway and sits in front of microservices, routing requests to the appropriate microservice. The gateway uses predicates and filters to route requests and modify requests and responses. It is lightweight and built on reactive principles to enable it to scale to thousands of routes.
This document appears to be from a VMware Tanzu Developer Connect presentation. It discusses Tanzu Application Platform (TAP), which provides a developer experience on Kubernetes across multiple clouds. TAP aims to unlock developer productivity, build rapid paths to production, and coordinate the work of development, security and operations teams. It offers features like pre-configured templates, integrated developer tools, centralized visibility and workload status, role-based access control, automated pipelines and built-in security. The presentation provides examples of how these capabilities improve experiences for developers, operations teams and security teams.
The document provides information about a Tanzu Developer Connect Workshop on Tanzu Application Platform. The agenda includes welcome and introductions on Tanzu Application Platform, followed by interactive hands-on workshops on the developer experience and operator experience. It will conclude with a quiz, prizes and giveaways. The document discusses challenges with developing on Kubernetes and how Tanzu Application Platform aims to improve the developer experience with features like pre-configured templates, developer tools integration, rapid iteration and centralized management.
The Tanzu Developer Connect is a hands-on workshop that dives deep into TAP. Attendees receive a hands on experience. This is a great program to leverage accounts with current TAP opportunities.
The Tanzu Developer Connect is a hands-on workshop that dives deep into TAP. Attendees receive a hands on experience. This is a great program to leverage accounts with current TAP opportunities.
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023VMware Tanzu
This document discusses simplifying and scaling enterprise Spring applications in the cloud. It provides an overview of Azure Spring Apps, which is a fully managed platform for running Spring applications on Azure. Azure Spring Apps handles infrastructure management and application lifecycle management, allowing developers to focus on code. It is jointly built, operated, and supported by Microsoft and VMware. The document demonstrates how to create an Azure Spring Apps service, create an application, and deploy code to the application using three simple commands. It also discusses features of Azure Spring Apps Enterprise, which includes additional capabilities from VMware Tanzu components.
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootVMware Tanzu
The document discusses 15 factors for building cloud native applications with Kubernetes based on the 12 factor app methodology. It covers factors such as treating code as immutable, externalizing configuration, building stateless and disposable processes, implementing authentication and authorization securely, and monitoring applications like space probes. The presentation aims to provide an overview of the 15 factors and demonstrate how to build cloud native applications using Kubernetes based on these principles.
SpringOne Tour: The Influential Software EngineerVMware Tanzu
The document discusses the importance of culture in software projects and how to influence culture. It notes that software projects involve people and personalities, not just technology. It emphasizes that culture informs everything a company does and is very difficult to change. It provides advice on being aware of your company's culture, finding ways to inculcate good cultural values like writing high-quality code, and approaches for influencing decision makers to prioritize culture.
SpringOne Tour: Domain-Driven Design: Theory vs PracticeVMware Tanzu
This document discusses domain-driven design, clean architecture, bounded contexts, and various modeling concepts. It provides examples of an e-scooter reservation system to illustrate domain modeling techniques. Key topics covered include identifying aggregates, bounded contexts, ensuring single sources of truth, avoiding anemic domain models, and focusing on observable domain behaviors rather than implementation details.
Proactive Vulnerability Detection in Source Code Using Graph Neural Networks:...Ranjan Baisak
As software complexity grows, traditional static analysis tools struggle to detect vulnerabilities with both precision and context—often triggering high false positive rates and developer fatigue. This article explores how Graph Neural Networks (GNNs), when applied to source code representations like Abstract Syntax Trees (ASTs), Control Flow Graphs (CFGs), and Data Flow Graphs (DFGs), can revolutionize vulnerability detection. We break down how GNNs model code semantics more effectively than flat token sequences, and how techniques like attention mechanisms, hybrid graph construction, and feedback loops significantly reduce false positives. With insights from real-world datasets and recent research, this guide shows how to build more reliable, proactive, and interpretable vulnerability detection systems using GNNs.
How can one start with crypto wallet development.pptxlaravinson24
This presentation is a beginner-friendly guide to developing a crypto wallet from scratch. It covers essential concepts such as wallet types, blockchain integration, key management, and security best practices. Ideal for developers and tech enthusiasts looking to enter the world of Web3 and decentralized finance.
Join Ajay Sarpal and Miray Vu to learn about key Marketo Engage enhancements. Discover improved in-app Salesforce CRM connector statistics for easy monitoring of sync health and throughput. Explore new Salesforce CRM Synch Dashboards providing up-to-date insights into weekly activity usage, thresholds, and limits with drill-down capabilities. Learn about proactive notifications for both Salesforce CRM sync and product usage overages. Get an update on improved Salesforce CRM synch scale and reliability coming in Q2 2025.
Key Takeaways:
Improved Salesforce CRM User Experience: Learn how self-service visibility enhances satisfaction.
Utilize Salesforce CRM Synch Dashboards: Explore real-time weekly activity data.
Monitor Performance Against Limits: See threshold limits for each product level.
Get Usage Over-Limit Alerts: Receive notifications for exceeding thresholds.
Learn About Improved Salesforce CRM Scale: Understand upcoming cloud-based incremental sync.
Adobe After Effects Crack FREE FRESH version 2025kashifyounis067
🌍📱👉COPY LINK & PASTE ON GOOGLE http://drfiles.net/ 👈🌍
Adobe After Effects is a software application used for creating motion graphics, special effects, and video compositing. It's widely used in TV and film post-production, as well as for creating visuals for online content, presentations, and more. While it can be used to create basic animations and designs, its primary strength lies in adding visual effects and motion to videos and graphics after they have been edited.
Here's a more detailed breakdown:
Motion Graphics:
.
After Effects is powerful for creating animated titles, transitions, and other visual elements to enhance the look of videos and presentations.
Visual Effects:
.
It's used extensively in film and television for creating special effects like green screen compositing, object manipulation, and other visual enhancements.
Video Compositing:
.
After Effects allows users to combine multiple video clips, images, and graphics to create a final, cohesive visual.
Animation:
.
It uses keyframes to create smooth, animated sequences, allowing for precise control over the movement and appearance of objects.
Integration with Adobe Creative Cloud:
.
After Effects is part of the Adobe Creative Cloud, a suite of software that includes other popular applications like Photoshop and Premiere Pro.
Post-Production Tool:
.
After Effects is primarily used in the post-production phase, meaning it's used to enhance the visuals after the initial editing of footage has been completed.
FL Studio Producer Edition Crack 2025 Full Versiontahirabibi60507
Copy & Past Link 👉👉
http://drfiles.net/
FL Studio is a Digital Audio Workstation (DAW) software used for music production. It's developed by the Belgian company Image-Line. FL Studio allows users to create and edit music using a graphical user interface with a pattern-based music sequencer.
Who Watches the Watchmen (SciFiDevCon 2025)Allon Mureinik
Tests, especially unit tests, are the developers’ superheroes. They allow us to mess around with our code and keep us safe.
We often trust them with the safety of our codebase, but how do we know that we should? How do we know that this trust is well-deserved?
Enter mutation testing – by intentionally injecting harmful mutations into our code and seeing if they are caught by the tests, we can evaluate the quality of the safety net they provide. By watching the watchmen, we can make sure our tests really protect us, and we aren’t just green-washing our IDEs to a false sense of security.
Talk from SciFiDevCon 2025
https://www.scifidevcon.com/courses/2025-scifidevcon/contents/680efa43ae4f5
⭕️➡️ FOR DOWNLOAD LINK : http://drfiles.net/ ⬅️⭕️
Maxon Cinema 4D 2025 is the latest version of the Maxon's 3D software, released in September 2024, and it builds upon previous versions with new tools for procedural modeling and animation, as well as enhancements to particle, Pyro, and rigid body simulations. CG Channel also mentions that Cinema 4D 2025.2, released in April 2025, focuses on spline tools and unified simulation enhancements.
Key improvements and features of Cinema 4D 2025 include:
Procedural Modeling: New tools and workflows for creating models procedurally, including fabric weave and constellation generators.
Procedural Animation: Field Driver tag for procedural animation.
Simulation Enhancements: Improved particle, Pyro, and rigid body simulations.
Spline Tools: Enhanced spline tools for motion graphics and animation, including spline modifiers from Rocket Lasso now included for all subscribers.
Unified Simulation & Particles: Refined physics-based effects and improved particle systems.
Boolean System: Modernized boolean system for precise 3D modeling.
Particle Node Modifier: New particle node modifier for creating particle scenes.
Learning Panel: Intuitive learning panel for new users.
Redshift Integration: Maxon now includes access to the full power of Redshift rendering for all new subscriptions.
In essence, Cinema 4D 2025 is a major update that provides artists with more powerful tools and workflows for creating 3D content, particularly in the fields of motion graphics, VFX, and visualization.
Exploring Wayland: A Modern Display Server for the FutureICS
Wayland is revolutionizing the way we interact with graphical interfaces, offering a modern alternative to the X Window System. In this webinar, we’ll delve into the architecture and benefits of Wayland, including its streamlined design, enhanced performance, and improved security features.
Interactive Odoo Dashboard for various business needs can provide users with dynamic, visually appealing dashboards tailored to their specific requirements. such a module that could support multiple dashboards for different aspects of a business
✅Visit And Buy Now : https://bit.ly/3VojWza
✅This Interactive Odoo dashboard module allow user to create their own odoo interactive dashboards for various purpose.
App download now :
Odoo 18 : https://bit.ly/3VojWza
Odoo 17 : https://bit.ly/4h9Z47G
Odoo 16 : https://bit.ly/3FJTEA4
Odoo 15 : https://bit.ly/3W7tsEB
Odoo 14 : https://bit.ly/3BqZDHg
Odoo 13 : https://bit.ly/3uNMF2t
Try Our website appointment booking odoo app : https://bit.ly/3SvNvgU
👉Want a Demo ?📧 [email protected]
➡️Contact us for Odoo ERP Set up : 091066 49361
👉Explore more apps: https://bit.ly/3oFIOCF
👉Want to know more : 🌐 https://www.axistechnolabs.com/
#odoo #odoo18 #odoo17 #odoo16 #odoo15 #odooapps #dashboards #dashboardsoftware #odooerp #odooimplementation #odoodashboardapp #bestodoodashboard #dashboardapp #odoodashboard #dashboardmodule #interactivedashboard #bestdashboard #dashboard #odootag #odooservices #odoonewfeatures #newappfeatures #odoodashboardapp #dynamicdashboard #odooapp #odooappstore #TopOdooApps #odooapp #odooexperience #odoodevelopment #businessdashboard #allinonedashboard #odooproducts
WinRAR Crack for Windows (100% Working 2025)sh607827
copy and past on google ➤ ➤➤ https://hdlicense.org/ddl/
WinRAR Crack Free Download is a powerful archive manager that provides full support for RAR and ZIP archives and decompresses CAB, ARJ, LZH, TAR, GZ, ACE, UUE, .
PDF Reader Pro Crack Latest Version FREE Download 2025mu394968
🌍📱👉COPY LINK & PASTE ON GOOGLE https://dr-kain-geera.info/👈🌍
PDF Reader Pro is a software application, often referred to as an AI-powered PDF editor and converter, designed for viewing, editing, annotating, and managing PDF files. It supports various PDF functionalities like merging, splitting, converting, and protecting PDFs. Additionally, it can handle tasks such as creating fillable forms, adding digital signatures, and performing optical character recognition (OCR).
TestMigrationsInPy: A Dataset of Test Migrations from Unittest to Pytest (MSR...Andre Hora
Unittest and pytest are the most popular testing frameworks in Python. Overall, pytest provides some advantages, including simpler assertion, reuse of fixtures, and interoperability. Due to such benefits, multiple projects in the Python ecosystem have migrated from unittest to pytest. To facilitate the migration, pytest can also run unittest tests, thus, the migration can happen gradually over time. However, the migration can be timeconsuming and take a long time to conclude. In this context, projects would benefit from automated solutions to support the migration process. In this paper, we propose TestMigrationsInPy, a dataset of test migrations from unittest to pytest. TestMigrationsInPy contains 923 real-world migrations performed by developers. Future research proposing novel solutions to migrate frameworks in Python can rely on TestMigrationsInPy as a ground truth. Moreover, as TestMigrationsInPy includes information about the migration type (e.g., changes in assertions or fixtures), our dataset enables novel solutions to be verified effectively, for instance, from simpler assertion migrations to more complex fixture migrations. TestMigrationsInPy is publicly available at: https://github.com/altinoalvesjunior/TestMigrationsInPy.
Avast Premium Security Crack FREE Latest Version 2025mu394968
🌍📱👉COPY LINK & PASTE ON GOOGLE https://dr-kain-geera.info/👈🌍
Avast Premium Security is a paid subscription service that provides comprehensive online security and privacy protection for multiple devices. It includes features like antivirus, firewall, ransomware protection, and website scanning, all designed to safeguard against a wide range of online threats, according to Avast.
Key features of Avast Premium Security:
Antivirus: Protects against viruses, malware, and other malicious software, according to Avast.
Firewall: Controls network traffic and blocks unauthorized access to your devices, as noted by All About Cookies.
Ransomware protection: Helps prevent ransomware attacks, which can encrypt your files and hold them hostage.
Website scanning: Checks websites for malicious content before you visit them, according to Avast.
Email Guardian: Scans your emails for suspicious attachments and phishing attempts.
Multi-device protection: Covers up to 10 devices, including Windows, Mac, Android, and iOS, as stated by 2GO Software.
Privacy features: Helps protect your personal data and online privacy.
In essence, Avast Premium Security provides a robust suite of tools to keep your devices and online activity safe and secure, according to Avast.
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AIdanshalev
If we were building a GenAI stack today, we'd start with one question: Can your retrieval system handle multi-hop logic?
Trick question, b/c most can’t. They treat retrieval as nearest-neighbor search.
Today, we discussed scaling #GraphRAG at AWS DevOps Day, and the takeaway is clear: VectorRAG is naive, lacks domain awareness, and can’t handle full dataset retrieval.
GraphRAG builds a knowledge graph from source documents, allowing for a deeper understanding of the data + higher accuracy.
3. Useful Benchmarks are the ones you run
Why running super-artificial benchmarks?
● Testing different parts of the web stack
● Comparing two versions (e.g., a specific patch)
● Measuring Framework overhead
● Optimizing for good latency, stable/predictable behavior,
THEN throughput
● Learning!
Is this a realistic use case?
What are we comparing here?
Show me latencies, percentiles,
error rates!
Is this really your app’s
bottleneck?
Rank your favorite features
(developer productivity, latency,
throughput, predictability…)
Run your own
4. Full Stack Benchmarks and Load Testers
Non-exhaustive selection...
● Gatling: https://gatling.io
○ Scala DSL, good features for “realistic” test scenarios
○ Nice colourful visualizations
● Wrk2: https://github.com/giltene/wrk2
○ CLI. Nice histogram outputs in plain text.
○ Constant throughput HTTP load
● JMeter: https://jmeter.apache.org/
○ Very common in the wild
○ Many features, including non-web apps
● Apache Bench: https://httpd.apache.org/docs/2.4/programs/ab.html
○ CLI. Part of Apache HTTP. Installed from OS package manager.
○ Quick and dirty
9. MicrobenchmarkRunner
@Warmup(iterations = 1, time = 1)
@Fork(value = 1, warmups = 0)
@Microbenchmark
public class DispatcherBenchmark {
@Benchmark
public void test(MainState state) throws Exception {
state.run("/foo");
}
@State(Scope.Thread)
@AuxCounters(Type.EVENTS)
public static class MainState {
…
}
10. DispatcherHandler Benchmarks
DispatcherHandler is 30% faster in Spring Boot 2.2
boot class method count errors median mean range
2.0 WebFluxBenchmark main 111557.000 ≈ 0 9702.130 10366.967 561.554
2.2 WebFluxBenchmark main 140320.000 ≈ 0 12871.144 13654.106 646.697
Workload: Webflux JSON GET
11. Spring Framework Changes
WebFlux and MVC:
https://github.com/spring-projects/spring-framework/issues/22644
https://github.com/spring-projects/spring-framework/issues/22340
https://github.com/spring-projects/spring-framework/issues/22341
15. Spring Boot 2.1.0 vs. 2.2.0-SNAPSHOT
Spring MVC:
● +20-30% req/sec depending on the use case
● Improved latency (75th percentile is now 95th percentile!)
Spring WebFlux:
● +20-40% req/sec, more stable with concurrency
● Annotation model is now on par with Functional one
● Latency -10% overall, higher percentiles are much better
● A lot of it is building up on Reactor Netty’s improvements
This is a very subjective benchmark, you won’t get the same results in your apps!
17. How Fast is Spring?
TL;DR How can I make my app go faster?
● Exclude stuff from the classpath that you know you don’t need
● Use @Configuration(proxyBeanMethods=false)
● Use the spring-context-indexer
● Use Spring 2.2 and Spring 5.2
● Use explicit spring.config.location
● Make bean definitions lazy by default
(spring.main.lazy-initialization=true ,
spring.data.jpa.repositories.bootstrap-mode=lazy )
● Unpack the fat jar and run with an explicit classpath, use application main class
● Run the JVM with -noverify. Also consider -XX:TieredStopAtLevel=1 . Java 11
or J9 use AppCDS.
● Import autoconfigurations individually
● Use functional bean definitions
● (Build a native image)
25. Spring Boot Features
Repo: https://github.com/dsyer/spring-boot-features
@SpringBootFeaturesApplication(WebFluxConfigurations.class)
@RestController
public class DemoApplication {
@GetMapping("/")
public Mono<String> home() {
return Mono.just("Hello World");
}
}
31. Spring Data Repositories
● Bootstrap mode can be useful at dev time
(spring.data.jpa.repositories.bootstrap-mode=lazy )
● Significant runtime performance improvements just before Spring Boot 2.2.0.M5
● Benchmarks at: https://github.com/spring-projects/spring-data-dev-tools/
32. Spring Data JPA Benchmarks
Throughput Ratio After / Before Optimization
34. Test Containers
● https://www.testcontainers.org
● Re-usable containers for development environment
@SpringBootTest({
"spring.datasource.url=jdbc:tc:mysql:5.7.22:///petclinic",
"spring.datasource.driver-class-name=org.testcontainers.jdbc.ContainerDatabaseDriver"
})
public abstract class MysqlIntegrationTest {
…
}
35. Test Containers: Static Initializer
public static class Initializer
implements ApplicationContextInitializer<ConfigurableApplicationContext> {
private static MySQLContainer<?> mysql;
static {
mysql = new MySQLContainer<>().withUsername("petclinic").withPassword("petclinic")
.withDatabaseName("petclinic");
mysql.start();
}
@Override
public void initialize(ConfigurableApplicationContext context) {
TestPropertyValues.of("spring.datasource.url=" + mysql.getJdbcUrl()).applyTo(context);
}
}
36. Test Containers: Reusable Containers
Spring Boot Test Containers App start (s) JVM running (s)
2.1.6 1.12.1 5.881 21.658
2.2.0 reusable_containers 2.055 4.812
Workload: PetClinic MySQL
static {
mysql = new MySQLContainer<>().withUsername("petclinic").withPassword("petclinic")
.withDatabaseName("petclinic").withReuse(true);
mysql.start();
}
38. Graal VM
● Oracle research project https://github.com/oracle/graal/
● OpenJDK + GC Engine, alternative to C1
● Community Edition (CE) and Enterprise Edition (EE)
● Polyglot programming model (Javascript, Ruby, R, Python, …)
● Native images
39. GraalVM GC: start.spring.io Project Generation
Benchmarks using JMH Microbenchmark Runner (projects per second)
JVM class method median mean range
Hotspot ProjectGenerationIntegrationTests projectBuilds 57.674 65.802 5.223
GraalCE ProjectGenerationIntegrationTests projectBuilds 67.270 89.004 14.268
GraalEE ProjectGenerationIntegrationTests projectBuilds 74.396 92.541 13.535
Graal CE is faster but EE has an edge. The Graal measurements are more noisy.
40. Native Images
● Spring 5.2 and Spring Boot 2.2 already have some features
● PetClinic:
○ Compile time: 10minutes(!)
○ Image size: 60MB
○ Startup time: 200ms
● More coming in 5.3/2.3. See presentation by Andy Clement and Sebastien Deleuze.
41. All that Glitters
(Admittedly stupid) benchmark with wrk, hammering HTTP GET on localhost
$ wrk -t4 -c100 -d30 --latency http://localhost:8080
Latency
JVM throughput(req/sec) 50%(ms) 99%(ms)
Hotspot 116,000 0.661 16
GraalCE 63,927 1.140 24.43
GraalEE 119,116 0.520 24.71
GraalCE (native) 19,320 5.650 32.18
GraalEE (native) 22,139 4.060 22.68