The document provides an overview of new features and changes in Spring Framework 4.0, including support for Java 8 language features like lambdas and method references, conditional bean loading, Groovy improvements, and updated support for Java EE 7 and other specifications. It summarizes the themes and goals of Spring 4.0, including a new baseline of Java 6 and above, support for Java 8, and emphasis on modularity and optionality of dependencies.
Micronaut and the Power of Ahead of Time Compilation - Devnexus 2019graemerocher
Presentation by Micronaut creator of the Ahead of Time (AOT) compilation features in Micronaut given at Devnexus 2019 including a demo on how to use AOT to generate Avro schemas for Kafka.
Example code can be found at https://github.com/micronaut-projects/presentations/tree/master/demos/devnexus2019/aotdemos
Presentation given at Devnexus 2019 on Micronaut Internals by Micronaut creator Graeme Rocher including information how how Dependency Injection and Aspect Oriented Programming work in Micronaut.
Micronaut: Evolving Java for the Microservices and Serverless Eragraemerocher
Presentation by Micronaut creator Graeme Rocher on how frameworks like Micronaut are evolving Java for the Microservice and Serverless Era through the use of innovative techniques like Ahead of Time Compilation (AoT)
Micronaut and the Power of Ahead of Time Compilation - Devnexus 2019graemerocher
Presentation by Micronaut creator of the Ahead of Time (AOT) compilation features in Micronaut given at Devnexus 2019 including a demo on how to use AOT to generate Avro schemas for Kafka.
Example code can be found at https://github.com/micronaut-projects/presentations/tree/master/demos/devnexus2019/aotdemos
Presentation given at Devnexus 2019 on Micronaut Internals by Micronaut creator Graeme Rocher including information how how Dependency Injection and Aspect Oriented Programming work in Micronaut.
Micronaut: Evolving Java for the Microservices and Serverless Eragraemerocher
Presentation by Micronaut creator Graeme Rocher on how frameworks like Micronaut are evolving Java for the Microservice and Serverless Era through the use of innovative techniques like Ahead of Time Compilation (AoT)
Byte code manipulation and instrumentalization in JavaAlex Moskvin
In presentation we consider - what bytecode is, how to manipulate it, how does it look like, how to read it and why would anyone needs to manipulate it.
We also develop a java agent that instrumentalizes access to MongoDB Java driver and expose that metrics via JMX.
Infinum Android Talks #02 - How to write an annotation processor in AndroidInfinum
How to write your own annotation processor in Android Studio. Compile time and runtime annotations will be compared to reflection. To conclude, butterknife library will be presented as an example of using compile time annotation processing.
ActiveAndroid is lightweight ORM library for Android, which we use in few of our projects. I'll demonstrate how to setup the library, and conclude with few examples of its usage.
Reactive Micro Services with Java seminarGal Marder
Abstract –
Micro services is the current architectural trend. In this seminar, we'll go over the concepts behind a good micro-service implementation and see how to implement it with available Java frameworks.
Target Audience
Java developers, team leaders, project managers.
Prerequisites
Java knowledge
Contents:
Overview of Micro-service architecture principles.
- Technical stacks:
- The Spring Stack (Spring Boot & Cloud)
- Lagom
- Akka and Play
- Vertx
- Complementaries
- Discovery
- Configuration
- Monitoring
.NET Core, ASP.NET Core Course, Session 3aminmesbahi
Session 3,
Introducing to Compiler
What is the LLVM?
LLILC
RyuJIT
AOT Compilation
Preprocessors and Conditional Compilation
An Overview on Dependency Injection
Micronaut Deep Dive - Devoxx Belgium 2019graemerocher
3 hour deep dive presentation by Micronaut creator, Graeme Rocher, at Devoxx Belgium 2019 showing how to use advanced features such as Aspect Oriented Programming (AOP), compiler plugins and so on. Associated YouTube video can be found at https://www.youtube.com/watch?v=S5yfTfPeue8
Byte code manipulation and instrumentalization in JavaAlex Moskvin
In presentation we consider - what bytecode is, how to manipulate it, how does it look like, how to read it and why would anyone needs to manipulate it.
We also develop a java agent that instrumentalizes access to MongoDB Java driver and expose that metrics via JMX.
Infinum Android Talks #02 - How to write an annotation processor in AndroidInfinum
How to write your own annotation processor in Android Studio. Compile time and runtime annotations will be compared to reflection. To conclude, butterknife library will be presented as an example of using compile time annotation processing.
ActiveAndroid is lightweight ORM library for Android, which we use in few of our projects. I'll demonstrate how to setup the library, and conclude with few examples of its usage.
Reactive Micro Services with Java seminarGal Marder
Abstract –
Micro services is the current architectural trend. In this seminar, we'll go over the concepts behind a good micro-service implementation and see how to implement it with available Java frameworks.
Target Audience
Java developers, team leaders, project managers.
Prerequisites
Java knowledge
Contents:
Overview of Micro-service architecture principles.
- Technical stacks:
- The Spring Stack (Spring Boot & Cloud)
- Lagom
- Akka and Play
- Vertx
- Complementaries
- Discovery
- Configuration
- Monitoring
.NET Core, ASP.NET Core Course, Session 3aminmesbahi
Session 3,
Introducing to Compiler
What is the LLVM?
LLILC
RyuJIT
AOT Compilation
Preprocessors and Conditional Compilation
An Overview on Dependency Injection
Micronaut Deep Dive - Devoxx Belgium 2019graemerocher
3 hour deep dive presentation by Micronaut creator, Graeme Rocher, at Devoxx Belgium 2019 showing how to use advanced features such as Aspect Oriented Programming (AOP), compiler plugins and so on. Associated YouTube video can be found at https://www.youtube.com/watch?v=S5yfTfPeue8
Webtrends im Unic-Alltag – eine EntdeckungsreiseUnic
Vortrag „Webtrends im Unic Alltag – eine Entdeckungsreise“ von Marco Roccioletti an der zweiten Schweizer Webtrends Engage in Zürich am 04. Dezember 2014.
E-Mail-Marketing: innovativ und gewinnbringendUnic
Vortrag "E-Mail-Marketing: innovativ und gewinnbringend" von Andreas Reutimann, Consultant und Teamleader bei Unic und Jan Beco, Consultant bei Unic anlässlich des E-Commerce Summit on Tour an der Swiss Online Marketing 2014
Vortrag von Martin Doriot, Leiter E-Services der Mobiliar, anlässlich des Unic Breakfast "Digitale Kundennähe - Fokus Insurance & Banking" am 18. Juni 2014 in Zürich.
Präsentation „Tag Management System bei der Post“ von Roger Grüring und Adrian Glauser, Die Schweizerische Post am Unic Fokus "Tag Management" vom 31.03.2015 in Zürich.
Vortrag von Beat Luginbühl, Fachspezialist Online Marketing bei der BEKB, anlässlich des Unic Breakfast "Digitale Kundennähe - Fokus Insurance & Banking" am 18. Juni 2014 in Zürich.
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013Sam Brannen
Spring Framework 4.0 is the next generation of the popular open source framework for Enterprise Java developers, focusing on the future with support for Java SE 8 and Java EE 7. In this presentation core Spring committer Sam Brannen will provide attendees an overview of the new enterprise features in the framework as well as new programming models made possible with the adoption of JDK 8 language features and APIs.
Specifically, this talk will cover support for lambda expressions and method references against Spring callback interfaces, JSR-310 Date-Time value types for Spring data binding and formatting, Spring's new @Conditional mechanism for activation of bean definitions, and a new WebSocket endpoint model. Regarding enterprise APIs, the presentation will cover Spring 4.0's new support for JMS 2.0, JPA 2.1, Bean Validation 1.1, Servlet 3.1, JCache, and JSR-236 concurrency. Last but not least, Sam will discuss improvements to Spring's testing support and point out which deprecated APIs have been pruned from the framework.
Spring Framework 4.0 is the latest generation of the popular open source framework for Enterprise Java developers, focusing on the future with support for Java SE 8 and Java EE 7. In this presentation core Spring committer Sam Brannen will provide attendees an overview of the new enterprise features in the framework as well as new programming models made possible with the adoption of JDK 8 language features and APIs.
Specifically, this talk will cover support for lambda expressions and method references against Spring callback interfaces, JSR-310 Date-Time value types for Spring data binding and formatting, Spring's new @Conditional mechanism for activation of bean definitions, and a new WebSocket endpoint model. The presentation also provides an overview of Spring 4.0's updated support for enterprise APIs such as JMS 2.0, JPA 2.1, Bean Validation 1.1, Servlet 3.1, and JCache. Last but not least, Sam will highlight some of the major themes for the upcoming Spring Framework 4.1 release such as support for JCache 1.0 annotations, annotation-driven JMS listeners, and testing improvements.
Spring 3.1 to 3.2 in a Nutshell - Spring I/O 2012Sam Brannen
Spring 3.1 introduced several eagerly awaited features including bean definition profiles (a.k.a., environment-specific configuration), enhanced Java-based application and infrastructure configuration (a la XML namespaces), and a new cache abstraction. This session will provide attendees a high-level overview of these major new features plus a quick look at additional enhancements to the framework such as the new c: namespace for constructor arguments, support for Servlet 3.0, improvements to Spring MVC and REST, and Spring's new integration testing support for profiles and configuration classes. In addition, this talk will introduce new features under development in the Spring 3.2 roadmap.
Spring Framework 4.1 is the latest release of the popular open source application framework for Java developers with continued innovation for Java SE 8 and enterprise Java. In this presentation core Spring committer Sam Brannen will provide attendees an overview of the new enterprise features in the framework as well as new programming models and testing features.
Specifically, this talk will cover support for annotation-driven JMS listeners, JMS 2.0's shared subscriptions, JCache (JSR-107) annotations, a compiler mode for the Spring Expression Language (SpEL), flexible resolution and transformation of static web resources, and Web MVC support for Groovy markup templates.
The presentation also provides an overview of Spring 4.1's refinements in other areas, for example: Java 8's Optional type for injection points, declarative MVC view resolution, Jackson's JsonView, WebSocket scope, SockJS client support, declarative SQL scripts and programmatic transactions in the TestContext framework, integration testing with Groovy scripts, and more.
Spring Day | Spring 3.1 in a Nutshell | Sam BrannenJAX London
2011-10-31 | 11:45 AM - 12:30 PM
Spring 3.1 introduces several eagerly awaited features including bean definition profiles (a.k.a., environment-specific configuration), enhanced Java-based application and infrastructure configuration (a la XML namespaces), and a new cache abstraction. This session will provide attendees with a high-level overview of these major new features, plus a quick look at additional enhancements to the framework such as the new c: namespace for constructor arguments, support for Servlet 3.0, improvements to Spring MVC and REST, and Spring's new integration testing support for profiles and configuration classes.
Testing Spring MVC and REST Web ApplicationsSam Brannen
The Spring Team has innovated extensively around testing in the past, and this innovation continues today. One of the most exciting recent additions to Spring's testing support is Spring MVC Test. What makes it so interesting is the comprehensive support for testing web applications and context hierarchies with the Spring TestContext Framework as well as comprehensive support for out-of-container Spring MVC and REST integration testing.
Join core Spring Framework committer Sam Brannen to see these new Spring Web testing features in action and learn how to speed up your development-test lifecycle.
As the leading full-stack application framework for Java SE and EE, the Spring Framework continues to deliver significant benefits to Java developers, increasing development productivity and runtime performance while improving test coverage and application quality.
In this talk, core Spring Framework committer Sam Brannen will provide attendees an overview of the new features in Spring 3.2 as well as a sneak peak at the roadmap for 4.0.
Spring Framework 3.2 builds on several themes delivered in 3.1 with a continued focus on asynchronous MVC processing with Servlet 3.0, support for using @Autowired and @Value as meta-annotations, support for custom @Bean definition annotations, and early support for JCache 0.5. Regarding the internals, CGLIB 3.0 and ASM 4.0 have been inlined, and the framework is now built with Gradle and hosted on GitHub. For those interested in testing their Spring-based web applications, Spring 3.2 offers new support for loading WebApplicationContexts in the TestContext framework, and the formerly standalone Spring MVC Test project is now included in the spring-test module, allowing for first-class testing of Spring MVC applications.
An introduction into Node as a programming platform. This presentation introduces Node - its history, its architecture, the eco system of npm modules and tools and its place in the enterprise IT architecture and infrastructure. The Express framework is introduced, some core modules, the notion of asynchronous operations and the use of module async and of the ES6 Promises. Server Sent Events are introduced for a server to client push application. The interaction with MongoDB is demonstrated. The presentation contains many code samples. Note that the presentation is associated with sources and workshop materials in GitHub: https://github.com/lucasjellema/nodejs-introduction-workshop-may2017 .
Composable Software Architecture with SpringSam Brannen
What does the architecture of a modern enterprise Java application look like? What have we as a community learned from our past? What does it mean to design a composable architecture? And how can Spring help developers meet the needs of enterprise applications in 2013 and beyond?
In this keynote presentation at Java Breeze, core Spring Framework committer Sam Brannen invites the audience to explore what it means to design, develop, and test modern enterprise Java applications following a composable software architecture model. Along the way, Sam will show how the Spring ecosystem and programming model fit into the larger picture of modern enterprise Java applications.
Newer version about JDK10 and 11 is here
https://www.slideshare.net/nowokay/summary-of-jdk10-and-what-will-come-into-jdk11-99363835
The material for the presentation of the JJUG CCC 2018 Spring
Setting up a free open source java e-commerce websiteCsaba Toth
History and lessons learned from a startup weekend. How I picked a FOSS e-commerce Java software and set-up a webshop in a weekend from ground zero. Including pushing it into the cloud.
Similar to JAZOON'13 - Sam Brannen - Spring Framework 4.0 - The Next Generation (20)
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
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
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
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.
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
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Are you looking to streamline your workflows and boost your projects’ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, you’re in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part “Essentials of Automation” series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Here’s what you’ll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
We’ll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Don’t miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
2. Sam Brannen
• Spring and Java Consultant @ Swiftmind
• Java Developer for over 15 years
• Spring Framework Core Committer since 2007
• Spring Trainer
• Presenter on Spring, Java, OSGi, and testing
|
3. Swiftmind: Areas of Expertise
• Spring Framework
• Java EE
• OSGi
• Agile Methodologies
• Software Engineering Best Practices
|
4. Swiftmind: How to find us
• Zurich, Switzerland
• Twitter: @swiftmind
• http://www.swiftmind.com
|
6. Agenda
• Spring 3.x in Review
• Themes in 4.0
• Java EE
• Java SE
• Spring 4 on Java 8
|
7. Spring 3.x: Component Model
• Powerful annotated component model
• stereotypes, configuration classes, composable
annotations, profiles
• Spring Expression Language
• and its use in @Value injection
|
8. Spring 3.x: Component Model
• Comprehensive REST support
• and other Spring @MVC additions
• Support for async MVC processing
• Spring MVC interacting with Servlet 3.0 async
callbacks
|
9. Spring 3.x: Component Model
• Declarative validation and formatting
• integration with JSR-303 Bean Validation
• Declarative scheduling
• trigger abstraction and cron support
• Declarative caching
• in-memory, Ehcache, etc.
|
10. Spring 3.x: Testing
• Embedded databases via <jdbc /> namespace
• @Configuration classes & @ActiveProfiles
• @WebAppConfiguration
• @ContextHierarchy
• Spring MVC Test framework
|
17. New Baseline
• Java SE 6+
• Java EE 6+ (Servlet 3.0 focused, Servlet 2.5
compatible)
• All deprecated packages removed
• Many deprecated methods removed as well
|
19. Java 8 Language & API Features
• Lambda expressions
• Method references
• JSR-310 Date and Time
• Repeatable annotations
• Parameter name discovery
|
20. Groovy + Spring 4.0
• A smooth out-of-the-box experience for
Groovy-based Spring applications
|
21. Groovy + Spring 4.0
• AOP adaptations
• special handling of GroovyObject calls
• consider a Spring application with all components
written in the Groovy language instead of Java
|
22. Groovy + Spring 4.0
• Groovy-based bean definitions
• formerly known as the Bean Builder in Grails
• now to live alongside Spring's configuration class
model
|
23. Conditional Bean Definitions
• A generalized model for conditional bean
definitions
• a more flexible and more dynamic variant of bean
definition profiles (as known from Spring 3.1)
• can be used for smart defaulting
• see Spring Boot J
|
24. Conditional Bean Definitions
• @Conditional with programmatic Condition
implementations
• can react to rich context (existing bean definitions,
etc.)
• profile support now simply a ProfileCondition
implementation class
|
25. Annotation-based Components
• Custom annotations may override specific
attributes of meta-annotations
• Purely convention-based
• use of same attribute name
|
28. Ordered Injection of Lists & Arrays
• Ordered/@Order on candidate beans
• Relative order within specific injection result
|
29. DI and Generics
• Type matching based on full generic type
• e.g. MyRepository<Customer>
• Generic factory methods supported in XML
config files
• Mockito, EasyMock, etc.
|
31. WebSockets
• WebSocket endpoint model along the lines of
Spring MVC
• JSR-356 but also covering SockJS and STOMP
• Endpoints using generic messaging patterns
|
34. Java EE Support (1/2)
• Spring 2.5 completed Java EE 5 support
• J2EE 1.3 – Java EE 5
• Spring 3.0 introduced Java EE 6 support
• J2EE 1.4 – Java EE 6
|
35. Java EE Support (2/2)
• Spring 3.1/3.2: strong Servlet 3.0 focus
• J2EE 1.4 (deprecated) – Java EE 6
• Spring 4.0 introduces explicit Java EE 7 support
• Java EE 5 (with JPA 2.0 feature pack) – Java EE 7
|
42. The State of Java 8
• Delayed again...
• Scheduled for GA in September 2013
• Now just Developer Preview in September
• OpenJDK 8 GA as late as March 2014 (!)
|
43. IDE Support for Java 8
• IntelliJ: available since IDEA 12, released in
Dec 2012
• Eclipse: announced for June 2014 (!)
• Spring Tool Suite: Eclipse-based beta support
earlier
|
44. Java 1.8 Bytecode Level
• Generated by -target 1.8 (compiler's default)
• Not accepted by ASM 4.x (Spring's bytecode
parsing library)
• Spring Framework 4.0 comes with patched ASM
4.1 variant
|
45. HashMap/HashSet Differences
• Different hash algorithms in use
• Leading to different hash iteration order
• Code shouldn't rely on such an order but
sometimes does
|
46. Java 8 Lambda Conventions
• Simple rule: interface with single method
•
•
•
•
typically callback interfaces
for example: Runnable, Callable
formerly “single abstract method” (SAM) types
now “functional interfaces”
|
47. Lambda + Spring = Natural Fit
• Many Spring APIs are candidates for lambdas
• by naturally following the lambda interface
conventions
|
50. Lambdas with JDBC APIs
• JdbcTemplate + RowMapper:
• Object mapRow(ResultSet rs, int rowNum) throws
SQLException
|
51. Lambdas with JdbcTemplate #1
JdbcTemplate jt = new JdbcTemplate(dataSource);
jt.query("SELECT name, age FROM person WHERE dep = ?",
ps -> { ps.setString(1, "Sales"); },
(rs, rowNum) -> new Person(rs.getString(1), rs.getInt(2)));
|
52. Lambdas with JdbcTemplate #2
JdbcTemplate jt = new JdbcTemplate(dataSource);
jt.query("SELECT name, age FROM person WHERE dep = ?",
ps -> {
ps.setString(1, "Sales");
},
(rs, rowNum) -> {
return new Person(rs.getString(1), rs.getInt(2));
});
|
53. Method References (1/2)
public List<Person> getPersonList(String department) {
JdbcTemplate jt = new JdbcTemplate(this.dataSource);
return jt.query(
"SELECT name, age FROM person WHERE dep = ?",
ps -> {
ps.setString(1, "test");
},
this::mapPerson);
}
|
54. Method References (2/2)
private Person mapPerson(ResultSet rs, int rowNum)
throws SQLException {
return new Person(rs.getString(1), rs.getInt(2));
}
|
55. JSR-310 Date and Time
import java.time.*;
import org.springframework.format.annotation.*;
public class Customer {
// @DateTimeFormat(iso=ISO.DATE)
private LocalDate birthDate;
@DateTimeFormat(pattern="M/d/yy h:mm")
private LocalDateTime lastContact;
|
57. Parameter Name Discovery (1/2)
• Java 8 defines a Parameter reflection type for methods
• application sources to be compiled with -parameters
|
58. Parameter Name Discovery (2/2)
• Spring's StandardReflectionParameterNameDiscoverer
• reading parameter names via Java 8's new Parameter type
• Spring's DefaultParameterNameDiscoverer
• now checking Java 8 first (-parameters)
• ASM-based reading of debug symbols next (-debug)
|
60. Roadmap
• Spring Framework 4.0 RC1: end of October
• Spring Framework 4.0 RC2: mid November
• Spring Framework 4.0 GA: end of 2013
|
61. Upgrade Considerations
• Spring 3.2 does not support 1.8 bytecode level
• upgrade to Spring 4.0 to enable Java 8 language features
• Spring Framework 4.0 still compatible with JDK 6
and 7
• Spring Framework 3.2 is in maintenance mode
|