This document provides an overview and agenda for a presentation on Java EE 6 and GlassFish v3. Key points include:
- Java EE 6 and GlassFish v3 were final releases in December 2009.
- The presentation will provide an overview of the new Java EE 6 specifications and demos of JPA 2.0, Servlet 3.0, EJB 3.1, JSF 2.0, and more.
- The speakers are experts on Java EE and GlassFish with experience at Sun Microsystems and as authors and conference speakers.
- The agenda includes deep dives on the major Java EE 6 specifications and building a sample web application using many of the new features.
Spring Framework Petclinic sample applicationAntoine Rey
Spring Petclinic is a sample application that has been designed to show how the Spring Framework can be used to build simple but powerful database-oriented applications.
The fork named Spring Framework Petclinic maintains a version both with a plain old Spring Framework configuration and a 3-layer architecture (i.e. presentation --> service --> repository).
* История JRuby;
* Платформа JVM и ее возможности;
* Почему стоит попробовать JRuby;
* Как мы в Хот Спот используем JRuby для разработки;
* Сравнение с другими JVM языками.
The document discusses Java EE 6 and its goals of being flexible, lightweight, and easier to develop on compared to previous versions. It outlines many of the new and updated specifications in Java EE 6, including Contexts and Dependency Injection, Bean Validation, JAX-RS, and others. It also describes key Java EE 6 concepts like managed beans, interceptors, and profiles aimed at improving ease of development.
This document discusses Spring Core and bean configuration in Spring. It covers defining beans through XML, Java configuration using annotations, and Groovy bean configuration. It also discusses the Spring IoC container and different types of ApplicationContext, and how to define bean dependencies through constructor injection, setter injection, and method injection using the @Bean annotation in Java configuration.
From continuous integration servers to blogging systems, we've all seen and used pluggable applications. Writing our own though can be an elusive task. That need not be the case, though, as the Java EE spec contains all you need to do just that. In this session, we'll see how we can leverage the power of CDI to write, for example, easily extensible JSF applications. When the session is over, you'll have all you need to write the next killer app, and, thanks to Java EE, you'll be surprised to see how little work it really is.
To cook lettuce, wash the leaves thoroughly in cold water and dry them with a salad spinner or paper towels. The lettuce can then be chopped or torn into bite-sized pieces and served. Lettuce is a low-calorie vegetable that provides vitamins K and A.
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 summarizes David Nuescheler's "David's Model" for content management systems. It discusses 7 principles: 1) prioritize data over rigid structures, 2) drive content hierarchy, 3) reduce workspaces, 4) beware duplicate names, 5) references can be problematic, 6) treat all content as files, and 7) avoid IDs when possible. The document provides examples and explanations for implementing each principle in a content repository like Apache Sling.
Spring Framework Petclinic sample applicationAntoine Rey
Spring Petclinic is a sample application that has been designed to show how the Spring Framework can be used to build simple but powerful database-oriented applications.
The fork named Spring Framework Petclinic maintains a version both with a plain old Spring Framework configuration and a 3-layer architecture (i.e. presentation --> service --> repository).
* История JRuby;
* Платформа JVM и ее возможности;
* Почему стоит попробовать JRuby;
* Как мы в Хот Спот используем JRuby для разработки;
* Сравнение с другими JVM языками.
The document discusses Java EE 6 and its goals of being flexible, lightweight, and easier to develop on compared to previous versions. It outlines many of the new and updated specifications in Java EE 6, including Contexts and Dependency Injection, Bean Validation, JAX-RS, and others. It also describes key Java EE 6 concepts like managed beans, interceptors, and profiles aimed at improving ease of development.
This document discusses Spring Core and bean configuration in Spring. It covers defining beans through XML, Java configuration using annotations, and Groovy bean configuration. It also discusses the Spring IoC container and different types of ApplicationContext, and how to define bean dependencies through constructor injection, setter injection, and method injection using the @Bean annotation in Java configuration.
From continuous integration servers to blogging systems, we've all seen and used pluggable applications. Writing our own though can be an elusive task. That need not be the case, though, as the Java EE spec contains all you need to do just that. In this session, we'll see how we can leverage the power of CDI to write, for example, easily extensible JSF applications. When the session is over, you'll have all you need to write the next killer app, and, thanks to Java EE, you'll be surprised to see how little work it really is.
To cook lettuce, wash the leaves thoroughly in cold water and dry them with a salad spinner or paper towels. The lettuce can then be chopped or torn into bite-sized pieces and served. Lettuce is a low-calorie vegetable that provides vitamins K and A.
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 summarizes David Nuescheler's "David's Model" for content management systems. It discusses 7 principles: 1) prioritize data over rigid structures, 2) drive content hierarchy, 3) reduce workspaces, 4) beware duplicate names, 5) references can be problematic, 6) treat all content as files, and 7) avoid IDs when possible. The document provides examples and explanations for implementing each principle in a content repository like Apache Sling.
This document provides an overview of Module 01 from a course on Java Enterprise Edition (JEE) and web application development. It covers the history and evolution of Java, the Java platform editions, key Java principles, and an introduction to the HotSpot Java Virtual Machine (JVM).
The document discusses new features in Java Persistence API (JPA) 2.0, including more flexible object/relational mapping, an expanded query language, the addition of the Criteria API and Metamodel API, support for pessimistic locking and validation, and standardized configuration options. JPA 2.0 provides object/relational mapping for Java applications and allows developers to manage data persistence through an entity manager and query language.
This document provides an outline for a course on fundamental Java programming. The outline includes 8 modules that cover topics like introduction to Java, basic programming, object-oriented programming, file input/output, networking, and threading. The document also provides background information on Java history, principles, platforms, and the HotSpot Java Virtual Machine. It discusses Java's development from 1995 to present and goals of being simple, secure, portable, high-performance and dynamic.
The document discusses tools for monitoring and managing Java applications and devices using JMX and SNMP technologies. JMX allows building distributed, web-based solutions for monitoring and managing applications and networks. SNMP is commonly used to monitor network devices. The document then covers JConsole and JMX consoles for visualizing JMX data from local or remote Java applications, with an emphasis on monitoring JBoss Application Server using tools like JConsole, VisualVM, and JBoss' twiddle command-line tool.
Zend Framework 2 provides a modular structure and tools for building web applications in PHP. It includes modules for authentication, authorization, forms, routing, translation and more. The framework uses a Model-View-Controller architecture with configurable events. Modules can be configured and extended through PHP files and configuration is cached for improved performance. Views can return different response types like HTML or JSON. Forms, routing, access control and internationalization are supported out of the box.
Java EE 7 will focus on enabling Java EE applications and services to easily operate in public and private cloud environments. Key areas of focus include improved packaging for cloud deployment, tighter resource management, and potential new APIs for cloud services. Modularity enhancements based on Java SE 8 modules will allow applications to be composed of independent, versioned modules. The first Java EE 7 specifications have already been approved.
Add a bit of ACID to Cassandra. Cassandra Summit EU 2014odnoklassniki.ru
OK.ru is one of the largest social networks for Russian-speaking audiences with 80+ million unique user’s visits monthly. ok.ru uses Cassandra since 2010 and made a number of improvements to C* 2.0 and 2.1 codebase. Until recent time more than 50 TB of data at Ok.ru OLTP systems was managed by Microsoft SQL Sever. It’s very expensive, hard to scale and cannot save us from outage if one of our data centers fail. We wanted a new, fast scalable and reliable storage for these data. These data has requirements to support ACID transactions, so we don’t have to rewrite all application code from scratch. С* does not support these transactions, only lightweight, so we implemented a new storage with ACID and selected features of SQL world by ourselves. Still, it has C* at its heart. We’ll discuss the internals of the new storage, what features of C* we had to alter and which to rewrite from scratch. We’ll also talk about its operational experience in production.
ok.ru is one of top 10 internet sites of the World, according to similarweb.com. Under the hood, it has several thousand servers. Each of those servers own only fraction of the data or business logic. Shared nothing architecture can be hardly applied to social network, due to its nature, so a lot of communication happens between these servers, diverse in kind and volume. This makes ok.ru one of the largest, complicated, yet highly loaded distributed systems in the world.
This talk is about our experience in building always available, resilient to failures distributed systems in Java, their basic and not so basic failure and recovery scenarios, methods of failure testing and diagnostics. We’ll also discuss on possible disasters and how to prevent or get over them.
Custom gutenberg block development with ReactImran Sayed
Learn how to build custom Gutenberg blocks in WordPress.
Git repo: https://github.com/imranhsayed/custom-blocks
YouTube Video:
https://youtu.be/U4sfx7vN0Iw?list=PLD8nQCAhR3tSijB-KSc26ZiYYz3Lts4HD
Learn how to develop custom Gutenberg blocks using ESNext .
The document discusses using annotations in Java, providing examples of annotations for servlets, EJBs, web services, CDI, and using frameworks like JUnit, Spring, Javassist, and ASM. It presents code samples to define servlets, session beans, RESTful and SOAP web services, and component injection using annotations instead of XML configurations. The document also demonstrates how to programmatically read annotation values and metadata using reflection, Javassist, and ASM.
This document provides an overview of Node.js and how to use it for web development. It covers installing Node.js, the basic syntax and features of Node.js like modules, asynchronous programming. It also discusses using the NPM package manager and popular Node packages. Finally, it demonstrates how to build a basic web server and framework like Express along with integrating a database like MySQL.
Are you tired of java.lang.OutOfMemoryError: PermGen space? Then this talk is for you! We'll begin with a crash course in the Java memory model in order to understand what the error message means. Then we'll look at different causes of the error and how to avoid them. We may glance at a few interesting mistakes from the Open Source world. Last but not least you'll learn how you can get rid of java.lang.OutOfMemoryError: PermGen space once and for all.
This document discusses various tools for diagnosing and monitoring applications running on the Java Virtual Machine (JVM). It begins with an overview of demo tools like jps, jcmd, jstat, and Java Mission Control. It then discusses internals of how these tools access a running JVM through mechanisms like JMX, attaching to processes, and the jvmstat performance data file. The document concludes with a discussion of future improvements including more diagnostic commands, JMX enhancements, improved JVM logging, and removing older tools.
ElsassJUG - Le classpath n'est pas mort...Alexis Hassler
En 2009, la mort du classpath a été annoncée. Les classloaders à plat ou hiérarchiques devaient être remplacés par des systèmes modulaires et tous nos problèmes de dépendance devaient se résoudre d’eux-mêmes. Cinq ans plus tard, le classpath vit toujours et pour quelques temps encore.
Dans la première partie de cette session, je vous propose de revenir sur le fonctionnement des classloaders du JDK et les problèmes infernaux posés par le classpath. Nous verrons aussi comment les serveurs d’applications, comme Tomcat, gèrent leur classloaders de façon hiérarchique, afin d’isoler les applications entre elles.
Dans la deuxième partie, je parlerai de modularité et de son impact sur la gestion des dépendances, à l’exécution des applications. Des solutions existent déjà, comme OSGi, d’autres émergent, comme JBoss Modules. Je vous montrerai comment ce dernier fonctionne, dans WildFly ou en autonome.
This document discusses how to test enterprise Java applications. It recommends that unit tests cover 80% of code to test small pieces of code and give confidence to make changes. Integration tests cover 15% of code to test collaboration between components like databases and servers. Acceptance tests cover the remaining 5% by testing customer requirements through concrete examples and user stories. The document provides examples of testing frameworks for different layers, including JS TestDriver and Sinon.js for client-side tests, JUnit and Mockito for server-side tests, and DBUnit and Arquillian for persistence tests. It emphasizes the importance of continuous integration to run tests automatically and ensure quality.
Thread dumps provide snapshots of a Java application's threads and their states. When a slowdown occurs, get multiple thread dumps over time to analyze thread activity and identify potential issues like:
1) Lock contention between threads waiting to enter synchronized methods or blocks.
2) Deadlocks from circular wait conditions that can hang applications.
3) Threads waiting for I/O responses from databases or networks.
4) High CPU usage by specific threads as shown through monitoring tools.
Analyzing thread dumps helps locate performance bottlenecks and fix synchronization, resource contention, or inefficient code issues degrading application speed.
[Spring Camp 2013] Java Configuration 없인 못살아!Arawn Park
Spring Camp 2013 / Track B Session 2
Java Configuration은 Spring 3.0과 함께 등장했습니다. 초기에는 '이게 뭐야?' 싶은 정도로 제대로된 모습을 갖춘 상태가 아니었습니다. 뒤돌아보면 스프링 1.0 시절의 XML을 보는것 같았지요. (웃음)
하지만 3.1이 발표되며 상황이 바뀌었습니다. XML 설정을 대체할 정도로 성장했을 뿐만 아니라 더 많은 것들을 할 수 있게 되었거든요.
이 시간에는 Spring을 사용하는 대표적인 예제 PetClinic(https://github.com/arawn/spring-petclinic)을 Java Configuration으로 재구성한 모습을 코드로 보여드립니다. 그리고 제가 보는 Java Configuration의 매력요소를 공유합니다.
LyonJUG : Comment Jigsaw est prêt à tuer le classpathAlexis Hassler
Présentation au LyonJUG le 17 octobre 2015.
En 2009, la mort du classpath a été annoncée. Les classloaders à plat ou hiérarchiques devaient être remplacés par des systèmes modulaires et tous nos problèmes de dépendance devaient se résoudre d'eux-mêmes. C'est le projet Jigsaw qui devait accomplir cette tâche. Il sera finalement intégré au JDK 9 dont la sortie est prévue pour 2017.
Dans la première partie de cette présentation, on revient sur le fonctionnement des classloaders du JDK et on voit au travers quelques exemples les problèmes étranges qu'ils posent.
Dans la deuxième partie, on présente ce que Jigsaw va apporter et expliquera quels problèmes il va résoudre. On compare Jigsaw aux solutions qui existent déjà, comme OSGi et JBoss Modules.
JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)Stephen Chin
JavaFX 2.0 is the next version of a revolutionary rich client platform for developing immersive desktop applications. One of the new features in JavaFX 2.0 is a set of pure Java APIs that can be used from any JVM language, opening up tremendous possibilities. This presentation demonstrates the benefits of using JavaFX 2.0 together with the Scala programming language to provide a type-safe declarative syntax with support for lazy bindings and collections. Advanced language features, such as DelayedInit and @specialized will be discussed, as will ways of forcing prioritization of implicit conversions for n-level cases. Those who survive the pure technical geekiness of this talk will be rewarded with plenty of JavaFX UI eye candy.
The document discusses challenges with cross-platform testing of a content management system used at the BBC that runs on both Windows and Unix. It describes using tools like Test::MockObject and Test::MockModule to mock platform-specific functions and GUI components to allow Unix tests to run on Windows. Automating tests on multiple platforms and writing tests in a platform-agnostic way from the start are recommended to improve test coverage across operating systems.
The document provides an overview of new concepts and features in Java EE 6, including profiles like Web Profile 1.0 that define subsets of the platform, new specifications like Managed Beans 1.0 and Interceptors 1.1, and updates to existing specifications such as EJB 3.1, JPA 2.0, Servlet 3.0, and JSF 2.0. It discusses concepts like pruning of specifications, portable JNDI names, embeddable containers, and the move of Facelets as the preferred view definition language for JSF.
This document provides an overview of new features in Java EE 6, as presented by Antonio Goncalves. It discusses several major new concepts, including profiles, pruning of specifications, portable JNDI names, managed beans, and interceptors. It also summarizes new features for various specifications, such as JPA 2.0 adding richer mappings and criteria queries, EJB 3.1 introducing asynchronous calls and timers, Servlet 3.0 focusing on ease of development and pluggability, and JSF 2.0 making Facelets the preferred view definition language. The document aims to give attendees an understanding of the key changes and improvements in Java EE 6.
This document provides an overview of Module 01 from a course on Java Enterprise Edition (JEE) and web application development. It covers the history and evolution of Java, the Java platform editions, key Java principles, and an introduction to the HotSpot Java Virtual Machine (JVM).
The document discusses new features in Java Persistence API (JPA) 2.0, including more flexible object/relational mapping, an expanded query language, the addition of the Criteria API and Metamodel API, support for pessimistic locking and validation, and standardized configuration options. JPA 2.0 provides object/relational mapping for Java applications and allows developers to manage data persistence through an entity manager and query language.
This document provides an outline for a course on fundamental Java programming. The outline includes 8 modules that cover topics like introduction to Java, basic programming, object-oriented programming, file input/output, networking, and threading. The document also provides background information on Java history, principles, platforms, and the HotSpot Java Virtual Machine. It discusses Java's development from 1995 to present and goals of being simple, secure, portable, high-performance and dynamic.
The document discusses tools for monitoring and managing Java applications and devices using JMX and SNMP technologies. JMX allows building distributed, web-based solutions for monitoring and managing applications and networks. SNMP is commonly used to monitor network devices. The document then covers JConsole and JMX consoles for visualizing JMX data from local or remote Java applications, with an emphasis on monitoring JBoss Application Server using tools like JConsole, VisualVM, and JBoss' twiddle command-line tool.
Zend Framework 2 provides a modular structure and tools for building web applications in PHP. It includes modules for authentication, authorization, forms, routing, translation and more. The framework uses a Model-View-Controller architecture with configurable events. Modules can be configured and extended through PHP files and configuration is cached for improved performance. Views can return different response types like HTML or JSON. Forms, routing, access control and internationalization are supported out of the box.
Java EE 7 will focus on enabling Java EE applications and services to easily operate in public and private cloud environments. Key areas of focus include improved packaging for cloud deployment, tighter resource management, and potential new APIs for cloud services. Modularity enhancements based on Java SE 8 modules will allow applications to be composed of independent, versioned modules. The first Java EE 7 specifications have already been approved.
Add a bit of ACID to Cassandra. Cassandra Summit EU 2014odnoklassniki.ru
OK.ru is one of the largest social networks for Russian-speaking audiences with 80+ million unique user’s visits monthly. ok.ru uses Cassandra since 2010 and made a number of improvements to C* 2.0 and 2.1 codebase. Until recent time more than 50 TB of data at Ok.ru OLTP systems was managed by Microsoft SQL Sever. It’s very expensive, hard to scale and cannot save us from outage if one of our data centers fail. We wanted a new, fast scalable and reliable storage for these data. These data has requirements to support ACID transactions, so we don’t have to rewrite all application code from scratch. С* does not support these transactions, only lightweight, so we implemented a new storage with ACID and selected features of SQL world by ourselves. Still, it has C* at its heart. We’ll discuss the internals of the new storage, what features of C* we had to alter and which to rewrite from scratch. We’ll also talk about its operational experience in production.
ok.ru is one of top 10 internet sites of the World, according to similarweb.com. Under the hood, it has several thousand servers. Each of those servers own only fraction of the data or business logic. Shared nothing architecture can be hardly applied to social network, due to its nature, so a lot of communication happens between these servers, diverse in kind and volume. This makes ok.ru one of the largest, complicated, yet highly loaded distributed systems in the world.
This talk is about our experience in building always available, resilient to failures distributed systems in Java, their basic and not so basic failure and recovery scenarios, methods of failure testing and diagnostics. We’ll also discuss on possible disasters and how to prevent or get over them.
Custom gutenberg block development with ReactImran Sayed
Learn how to build custom Gutenberg blocks in WordPress.
Git repo: https://github.com/imranhsayed/custom-blocks
YouTube Video:
https://youtu.be/U4sfx7vN0Iw?list=PLD8nQCAhR3tSijB-KSc26ZiYYz3Lts4HD
Learn how to develop custom Gutenberg blocks using ESNext .
The document discusses using annotations in Java, providing examples of annotations for servlets, EJBs, web services, CDI, and using frameworks like JUnit, Spring, Javassist, and ASM. It presents code samples to define servlets, session beans, RESTful and SOAP web services, and component injection using annotations instead of XML configurations. The document also demonstrates how to programmatically read annotation values and metadata using reflection, Javassist, and ASM.
This document provides an overview of Node.js and how to use it for web development. It covers installing Node.js, the basic syntax and features of Node.js like modules, asynchronous programming. It also discusses using the NPM package manager and popular Node packages. Finally, it demonstrates how to build a basic web server and framework like Express along with integrating a database like MySQL.
Are you tired of java.lang.OutOfMemoryError: PermGen space? Then this talk is for you! We'll begin with a crash course in the Java memory model in order to understand what the error message means. Then we'll look at different causes of the error and how to avoid them. We may glance at a few interesting mistakes from the Open Source world. Last but not least you'll learn how you can get rid of java.lang.OutOfMemoryError: PermGen space once and for all.
This document discusses various tools for diagnosing and monitoring applications running on the Java Virtual Machine (JVM). It begins with an overview of demo tools like jps, jcmd, jstat, and Java Mission Control. It then discusses internals of how these tools access a running JVM through mechanisms like JMX, attaching to processes, and the jvmstat performance data file. The document concludes with a discussion of future improvements including more diagnostic commands, JMX enhancements, improved JVM logging, and removing older tools.
ElsassJUG - Le classpath n'est pas mort...Alexis Hassler
En 2009, la mort du classpath a été annoncée. Les classloaders à plat ou hiérarchiques devaient être remplacés par des systèmes modulaires et tous nos problèmes de dépendance devaient se résoudre d’eux-mêmes. Cinq ans plus tard, le classpath vit toujours et pour quelques temps encore.
Dans la première partie de cette session, je vous propose de revenir sur le fonctionnement des classloaders du JDK et les problèmes infernaux posés par le classpath. Nous verrons aussi comment les serveurs d’applications, comme Tomcat, gèrent leur classloaders de façon hiérarchique, afin d’isoler les applications entre elles.
Dans la deuxième partie, je parlerai de modularité et de son impact sur la gestion des dépendances, à l’exécution des applications. Des solutions existent déjà, comme OSGi, d’autres émergent, comme JBoss Modules. Je vous montrerai comment ce dernier fonctionne, dans WildFly ou en autonome.
This document discusses how to test enterprise Java applications. It recommends that unit tests cover 80% of code to test small pieces of code and give confidence to make changes. Integration tests cover 15% of code to test collaboration between components like databases and servers. Acceptance tests cover the remaining 5% by testing customer requirements through concrete examples and user stories. The document provides examples of testing frameworks for different layers, including JS TestDriver and Sinon.js for client-side tests, JUnit and Mockito for server-side tests, and DBUnit and Arquillian for persistence tests. It emphasizes the importance of continuous integration to run tests automatically and ensure quality.
Thread dumps provide snapshots of a Java application's threads and their states. When a slowdown occurs, get multiple thread dumps over time to analyze thread activity and identify potential issues like:
1) Lock contention between threads waiting to enter synchronized methods or blocks.
2) Deadlocks from circular wait conditions that can hang applications.
3) Threads waiting for I/O responses from databases or networks.
4) High CPU usage by specific threads as shown through monitoring tools.
Analyzing thread dumps helps locate performance bottlenecks and fix synchronization, resource contention, or inefficient code issues degrading application speed.
[Spring Camp 2013] Java Configuration 없인 못살아!Arawn Park
Spring Camp 2013 / Track B Session 2
Java Configuration은 Spring 3.0과 함께 등장했습니다. 초기에는 '이게 뭐야?' 싶은 정도로 제대로된 모습을 갖춘 상태가 아니었습니다. 뒤돌아보면 스프링 1.0 시절의 XML을 보는것 같았지요. (웃음)
하지만 3.1이 발표되며 상황이 바뀌었습니다. XML 설정을 대체할 정도로 성장했을 뿐만 아니라 더 많은 것들을 할 수 있게 되었거든요.
이 시간에는 Spring을 사용하는 대표적인 예제 PetClinic(https://github.com/arawn/spring-petclinic)을 Java Configuration으로 재구성한 모습을 코드로 보여드립니다. 그리고 제가 보는 Java Configuration의 매력요소를 공유합니다.
LyonJUG : Comment Jigsaw est prêt à tuer le classpathAlexis Hassler
Présentation au LyonJUG le 17 octobre 2015.
En 2009, la mort du classpath a été annoncée. Les classloaders à plat ou hiérarchiques devaient être remplacés par des systèmes modulaires et tous nos problèmes de dépendance devaient se résoudre d'eux-mêmes. C'est le projet Jigsaw qui devait accomplir cette tâche. Il sera finalement intégré au JDK 9 dont la sortie est prévue pour 2017.
Dans la première partie de cette présentation, on revient sur le fonctionnement des classloaders du JDK et on voit au travers quelques exemples les problèmes étranges qu'ils posent.
Dans la deuxième partie, on présente ce que Jigsaw va apporter et expliquera quels problèmes il va résoudre. On compare Jigsaw aux solutions qui existent déjà, comme OSGi et JBoss Modules.
JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)Stephen Chin
JavaFX 2.0 is the next version of a revolutionary rich client platform for developing immersive desktop applications. One of the new features in JavaFX 2.0 is a set of pure Java APIs that can be used from any JVM language, opening up tremendous possibilities. This presentation demonstrates the benefits of using JavaFX 2.0 together with the Scala programming language to provide a type-safe declarative syntax with support for lazy bindings and collections. Advanced language features, such as DelayedInit and @specialized will be discussed, as will ways of forcing prioritization of implicit conversions for n-level cases. Those who survive the pure technical geekiness of this talk will be rewarded with plenty of JavaFX UI eye candy.
The document discusses challenges with cross-platform testing of a content management system used at the BBC that runs on both Windows and Unix. It describes using tools like Test::MockObject and Test::MockModule to mock platform-specific functions and GUI components to allow Unix tests to run on Windows. Automating tests on multiple platforms and writing tests in a platform-agnostic way from the start are recommended to improve test coverage across operating systems.
The document provides an overview of new concepts and features in Java EE 6, including profiles like Web Profile 1.0 that define subsets of the platform, new specifications like Managed Beans 1.0 and Interceptors 1.1, and updates to existing specifications such as EJB 3.1, JPA 2.0, Servlet 3.0, and JSF 2.0. It discusses concepts like pruning of specifications, portable JNDI names, embeddable containers, and the move of Facelets as the preferred view definition language for JSF.
This document provides an overview of new features in Java EE 6, as presented by Antonio Goncalves. It discusses several major new concepts, including profiles, pruning of specifications, portable JNDI names, managed beans, and interceptors. It also summarizes new features for various specifications, such as JPA 2.0 adding richer mappings and criteria queries, EJB 3.1 introducing asynchronous calls and timers, Servlet 3.0 focusing on ease of development and pluggability, and JSF 2.0 making Facelets the preferred view definition language. The document aims to give attendees an understanding of the key changes and improvements in Java EE 6.
Carol McDonald discusses the key themes and technologies in Java EE 6, which was released on December 10, 2009. The major themes of Java EE 6 are right-sizing with modular profiles, extensibility through pluggability, and ease of development through features like dependency injection and managed beans. New and updated specifications in Java EE 6 include CDI 1.0, EJB 3.1, JPA 2.0, JSF 2.0, JAX-RS 1.1, and Servlet 3.0.
Java EE 6 workshop at Dallas Tech Fest 2011Arun Gupta
The document outlines the key features and capabilities of Java EE 6, which aims to provide more power to developers with less code. It discusses various Java EE 6 technologies like EJB 3.1, CDI, JPA 2.0, JSF 2.0, JAX-RS and how they simplify development. It also previews GlassFish 3.1, the reference implementation of Java EE 6 and talks about the next steps in the evolution of Java EE.
Java EE 6 & GlassFish = Less Code + More Power at CEJUGArun Gupta
The document discusses Java EE 6 and GlassFish, which provide developers with more power and flexibility while requiring less code. Key features of Java EE 6 like EJB 3.1, CDI, and JSF 2.0 incorporate more annotations and reduce the need for deployment descriptors. GlassFish is the open source reference implementation of Java EE 6 and offers benefits like modularity, embeddability, and support for cloud computing. Future versions of Java EE and GlassFish will focus on continued standards-based innovation.
Arun Gupta: London Java Community: Java EE 6 and GlassFish 3 Skills Matter
This document discusses Java EE 6 and GlassFish 3. It outlines that Java EE 6 and GlassFish 3 aim to provide a light-weight, extensible, and powerful platform. Key goals for Java EE 6 include making it more flexible, extensible by embracing open source frameworks, and easier to use and develop on. GlassFish 3 is the open source reference implementation of Java EE 6 and includes new features like clustering and centralized administration.
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ JAX London ...Arun Gupta
This document discusses Java EE 6 and GlassFish 3. It notes that Java EE 6 and GlassFish 3 aim to provide a light-weight, extensible, and powerful platform. Key features of Java EE 6 include improved ease of development through annotations, updated specifications like JSF 2.0 and EJB 3.1, and a new web profile. GlassFish 3 is the open source reference implementation of Java EE 6 and provides modularity, embeddability, and extensibility. Oracle will continue to develop and support GlassFish going forward.
Overview of Java EE 6 by Roberto Chinnici at SFJUGMarakana Inc.
The document provides an overview of the new features in the Java EE 6 platform, including new APIs, the Web Profile specification, improved extensibility, and highlights of APIs like JAX-RS and EJB 3.1. It summarizes the key components and extension points included in the Web Profile and describes how the platform focuses on pluggability, modular web applications, and common design patterns across APIs.
Java EE 6 & GlassFish = Less Code + More Power @ DevIgnitionArun Gupta
The document summarizes new features in Java EE 6 and GlassFish v3 that aim to provide developers with more powerful capabilities while requiring less code. Key highlights include annotations to simplify configuration and development, support for RESTful web services and dependency injection, and improvements to Java Server Faces, EJBs, and the Java Persistence API to enhance developer productivity.
The document is a presentation about Java EE 6 and GlassFish. It discusses how Java EE 6 and GlassFish aim to provide developers with less code and more power through features like annotations, simplified configurations, and support for newer Java technologies. It also summarizes some of the new Java EE 6 specifications and how they improve areas like web development, EJBs, JSF, JPA and more.
A fairly short (26 slides) presentation covering the GlassFish community and product (v2 and upcoming modular v3) as well as Java EE 5 and upcoming Java EE 6.
Java 7 and 8, what does it mean for youDmitry Buzdin
Java 7 and 8 introduced several new features and enhancements including Project Coin language changes to simplify coding, invokedynamic support for dynamic languages, try-with-resources for improved resource management, and improved concurrency utilities. Oracle's priorities for Java include supporting a vibrant ecosystem, generating revenue through Java support and management tools from JRockit, and lowering costs by converging JRockit and HotSpot features in future versions.
This document discusses the future of the GlassFish open source project. It outlines that GlassFish will continue to be developed as an open source project under Oracle, with GlassFish 3.1 planned for 2010 and GlassFish 4.0 aligned with Java EE 7. It highlights some new features for GlassFish 3.1 like clustering, application versioning, and RESTful API. It aims to reassure the community that Oracle's acquisition of Sun will not change the open governance and development of GlassFish.
Java EE 6 introduces several new specifications and updates to existing ones to improve ease of development. Key additions include Contexts and Dependency Injection (JSR 299), Bean Validation (JSR 303), and a RESTful Web Services API (JSR 311). Many specifications were updated, including major overhauls to Java Server Faces 2.0 (JSR 314) and Java Persistence 2.0 (JSR 317). The reference implementation is GlassFish v3, which supports all Java EE 6 features and provides both open source and commercial distributions.
Deep Dive Hands-on in Java EE 6 - Oredev 2010Arun Gupta
Arun Gupta presents an overview of the key features and specifications of Java EE 6, including:
1) Lightweight profiles like the Web Profile 1.0 make Java EE easier to use for web applications. Core specifications like EJB 3.1, JSF 2.0, and JPA 2.0 saw major updates.
2) New specifications include Contexts and Dependency Injection and Bean Validation which make developing Java EE applications simpler.
3) Servlets 3.0 brings annotations-based configuration and extensibility through web fragments, making it easier for frameworks to integrate with Java EE containers.
Java EE 6 & GlassFish 3: Light-weight, Extensible, and Powerful @ Silicon Val...Arun Gupta
Java EE 6 and GlassFish 3 provide a light-weight, extensible, and powerful platform. Key features include a web profile, pruning of unused specifications, support for open source frameworks, and easier development models with annotations and reduced configuration files. GlassFish 3 is the open source reference implementation of the Java EE 6 platform and includes new features like clustering and centralized administration.
Contextual Dependency Injection for Apachecon 2010Rohit Kelapure
The document discusses the history and evolution of Java EE and its specifications such as EJB and JSF. It introduces key concepts in Java EE 6 including Contexts and Dependency Injection (CDI), which provides a standard way to inject dependencies into Java objects without hardcoding them. CDI allows for loose coupling through contextual lifecycles and scopes, interceptors, and producers that control bean instantiation.
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010JUG Lausanne
GlassFish v3 is the latest version of the GlassFish application server which implements the full Java EE 6 specification; it includes new features like Java API for RESTful Web Services (JAX-RS 1.1), Contexts and Dependency Injection for Java EE (CDI 1.0), and Bean Validation 1.0. GlassFish v3 provides an open source, modular, and extensible Java EE application server platform that can be used for cloud computing and embedded applications. Going forward, Oracle will continue to develop GlassFish as an open source project while providing commercial support.
The document discusses the evolution of the Java EE platform. Some key points include:
- Java EE 6 introduced many new APIs and improvements to existing APIs like EJB 3.1, JPA 2.0, Servlets 3.0, Bean Validation, Context and Dependency Injection.
- It aimed to make Java EE more lightweight, flexible and developer-friendly through features like the Web Profile, more annotations, and less XML configuration.
- New APIs and capabilities in Java EE 6 included managed beans, interceptors, RESTful web services, and better integration between technologies like JSF and EJB.
Jackrabbit is an open source content repository for Java that implements the JCR 2.0 specification. It provides a flexible, hierarchical content storage system with features like full text search, versioning, transactions, and observation. Jackrabbit entered the Apache incubator in 2004 and graduated in 2006. It provides APIs and implementations for embedding a content repository, accessing it remotely over RMI, or deploying it as a shared resource using a servlet container or J2EE application server. The document discusses Jackrabbit's architecture, configuration, indexing, data storage, content modeling, and common issues around content hierarchies and concurrent edits.
The document introduces Tugdual Grall, a technical evangelist from Couchbase, and provides an agenda for his presentation on NoSQL and Couchbase Server 2.0. The agenda includes discussing why NoSQL is needed, the NoSQL landscape, document design, use cases, and an introduction to Couchbase Server 2.0. Trends like big data, cloud computing, and more data-driven mobile users are driving disruption of the database market and increased adoption of NoSQL technologies.
The document discusses using Lombok and Guava annotations and utilities to simplify Java code by automatically generating boilerplate code like getters, setters, toString methods. It provides an example of how Lombok reduces a Dog class from 210 lines to just 12 lines by adding annotations, and shows how Guava provides cleaner implementations of common methods like toString and equals.
JMS (Java Message Services) est une API qui permet aux applications Java de s'échanger des messages asynchrones par le biais d'un MOM (Message Orieneted Middleware). Cette session passera en revue l'API Java Message Services et présentera quelques retours d'expérience sur sa mise en œuvre.
Bonita Open Solution est la première solution Open Source complète de Business Process Management (BPM). Basée sur un moteur de workflow robuste, elle fournit tout l'outillage nécessaire pour créer efficacement des applications d’automatisation de processus métier, avec tous les bénéfices de l'approche BPM et une forte connectivité avec les systèmes d'informations existants.
Cette présentation introduira d'abord le concept du BPM et ses objectifs, puis une démonstration de Bonita Open Solution montrera comment elle peut être utilisée pour implémenter des applications métier. Ensuite, nous étudierons les choix et l'architecture techniques et nous verrons comment Bonita tire parti de technologies bien connues et efficaces (Eclipse RCP, Goolge Web Toolkit, Hibernate, Groovy...). Nous pourrons même donner quelques détails sur la manière dont l'équipe de Bonita utilise Scrum pour gérer le cycle de développement du produit.
Par Aurélien Pupier
GWT allows developers to create AJAX applications using Java instead of JavaScript. It provides a Java compiler that translates Java code into optimized JavaScript that can run across browsers. Key features include easy RPC, JSON handling, debugging, internationalization, and reuse of custom widgets. Some myths are that GWT is only for Java programmers or that it only works with Java backends, but it can integrate with any server technology and lower the barrier to AJAX development.
Comment concilier Agilité et projet au forfait ?Lorraine JUG
La gestion de projet Agile à capacité à devenir un mode privilégié de production de logiciel dans les prochaines années. Il donne une excellente visibilité sur la réalisation, et concentre les vecteurs de qualité sur le produit plutôt que sur les procédures.
Mais dans le cadre d’une sous-traitance du développement informatique, la gestion de projet agile se heurte naturellement à la notion de contrat forfaitaire. Au travers de 2 retours d’expériences de projets menés en Scrum je vous montre comment le forfait classique handicape l’agilité, mais aussi comment on peut réussir sur la base de nouveaux types de contrats.
Par Jean-François Jagodzinski
This document discusses how to foster continuous improvement through retrospectives. It begins with an agenda that covers why continuous improvement matters, what retrospectives are, and how to run them. It then discusses concepts like kaizen and gemba walks for improvement. Retrospectives are presented as an important tool for iterative development. Effective facilitation, structure, and participation are emphasized. Sample exercises and anti-patterns to avoid are provided. The document concludes by introducing a "retrospective cookbook" with additional techniques.
Montrer la mécanique de Scrum en l'appliquant à la session elle-même. Comme cette mécanique est mise en œuvre avec iceScrum, la session permet également de présenter un outil Open Source dédié à Scrum. Le backlog utilisé contient des sujets autour de Scrum et de l’agilité. C’est interactif : les participants sont invités à proposer des sujets pour compléter le backlog initial défini par les animateurs, à choisir ceux qui les intéressent le plus et à dire si un sujet (une "story") est terminé.
Par Claude Aubry (Aubry Conseil) & Vincent Barrier (iceScrum Technologies)
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
5th LF Energy Power Grid Model Meet-up SlidesDanBrown980551
5th Power Grid Model Meet-up
It is with great pleasure that we extend to you an invitation to the 5th Power Grid Model Meet-up, scheduled for 6th June 2024. This event will adopt a hybrid format, allowing participants to join us either through an online Mircosoft Teams session or in person at TU/e located at Den Dolech 2, Eindhoven, Netherlands. The meet-up will be hosted by Eindhoven University of Technology (TU/e), a research university specializing in engineering science & technology.
Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
What to expect
For the upcoming meetup we are organizing, we have an exciting lineup of activities planned:
-Insightful presentations covering two practical applications of the Power Grid Model.
-An update on the latest advancements in Power Grid -Model technology during the first and second quarters of 2024.
-An interactive brainstorming session to discuss and propose new feature requests.
-An opportunity to connect with fellow Power Grid Model enthusiasts and users.
Have you ever been confused by the myriad of choices offered by AWS for hosting a website or an API?
Lambda, Elastic Beanstalk, Lightsail, Amplify, S3 (and more!) can each host websites + APIs. But which one should we choose?
Which one is cheapest? Which one is fastest? Which one will scale to meet our needs?
Join me in this session as we dive into each AWS hosting service to determine which one is best for your scenario and explain why!
Your One-Stop Shop for Python Success: Top 10 US Python Development Providersakankshawande
Simplify your search for a reliable Python development partner! This list presents the top 10 trusted US providers offering comprehensive Python development services, ensuring your project's success from conception to completion.
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceIndexBug
Imagine a world where machines not only perform tasks but also learn, adapt, and make decisions. This is the promise of Artificial Intelligence (AI), a technology that's not just enhancing our lives but revolutionizing entire industries.
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-notes-und-domino-lizenzkostenreduzierung-in-der-welt-von-dlau/
DLAU und die Lizenzen nach dem CCB- und CCX-Modell sind für viele in der HCL-Community seit letztem Jahr ein heißes Thema. Als Notes- oder Domino-Kunde haben Sie vielleicht mit unerwartet hohen Benutzerzahlen und Lizenzgebühren zu kämpfen. Sie fragen sich vielleicht, wie diese neue Art der Lizenzierung funktioniert und welchen Nutzen sie Ihnen bringt. Vor allem wollen Sie sicherlich Ihr Budget einhalten und Kosten sparen, wo immer möglich. Das verstehen wir und wir möchten Ihnen dabei helfen!
Wir erklären Ihnen, wie Sie häufige Konfigurationsprobleme lösen können, die dazu führen können, dass mehr Benutzer gezählt werden als nötig, und wie Sie überflüssige oder ungenutzte Konten identifizieren und entfernen können, um Geld zu sparen. Es gibt auch einige Ansätze, die zu unnötigen Ausgaben führen können, z. B. wenn ein Personendokument anstelle eines Mail-Ins für geteilte Mailboxen verwendet wird. Wir zeigen Ihnen solche Fälle und deren Lösungen. Und natürlich erklären wir Ihnen das neue Lizenzmodell.
Nehmen Sie an diesem Webinar teil, bei dem HCL-Ambassador Marc Thomas und Gastredner Franz Walder Ihnen diese neue Welt näherbringen. Es vermittelt Ihnen die Tools und das Know-how, um den Überblick zu bewahren. Sie werden in der Lage sein, Ihre Kosten durch eine optimierte Domino-Konfiguration zu reduzieren und auch in Zukunft gering zu halten.
Diese Themen werden behandelt
- Reduzierung der Lizenzkosten durch Auffinden und Beheben von Fehlkonfigurationen und überflüssigen Konten
- Wie funktionieren CCB- und CCX-Lizenzen wirklich?
- Verstehen des DLAU-Tools und wie man es am besten nutzt
- Tipps für häufige Problembereiche, wie z. B. Team-Postfächer, Funktions-/Testbenutzer usw.
- Praxisbeispiele und Best Practices zum sofortigen Umsetzen
How to Get CNIC Information System with Paksim Ga.pptxdanishmna97
Pakdata Cf is a groundbreaking system designed to streamline and facilitate access to CNIC information. This innovative platform leverages advanced technology to provide users with efficient and secure access to their CNIC details.
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
Digital Marketing Trends in 2024 | Guide for Staying AheadWask
https://www.wask.co/ebooks/digital-marketing-trends-in-2024
Feeling lost in the digital marketing whirlwind of 2024? Technology is changing, consumer habits are evolving, and staying ahead of the curve feels like a never-ending pursuit. This e-book is your compass. Dive into actionable insights to handle the complexities of modern marketing. From hyper-personalization to the power of user-generated content, learn how to build long-term relationships with your audience and unlock the secrets to success in the ever-shifting digital landscape.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/building-and-scaling-ai-applications-with-the-nx-ai-manager-a-presentation-from-network-optix/
Robin van Emden, Senior Director of Data Science at Network Optix, presents the “Building and Scaling AI Applications with the Nx AI Manager,” tutorial at the May 2024 Embedded Vision Summit.
In this presentation, van Emden covers the basics of scaling edge AI solutions using the Nx tool kit. He emphasizes the process of developing AI models and deploying them globally. He also showcases the conversion of AI models and the creation of effective edge AI pipelines, with a focus on pre-processing, model conversion, selecting the appropriate inference engine for the target hardware and post-processing.
van Emden shows how Nx can simplify the developer’s life and facilitate a rapid transition from concept to production-ready applications.He provides valuable insights into developing scalable and efficient edge AI solutions, with a strong focus on practical implementation.
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
An English 🇬🇧 translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech 🇨🇿 version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
3. This is no science fiction
Java EE 6 and GlassFish v3
shipped final releases on
December 10th
2009
4. Agenda
● Overview of EE 6 and GlassFish v3
● Dive into some specs & demos
– JPA 2.0
– Servlet 3.0
– EJB 3.1
– JSF 2.0
– Bean Validation 1.0
– JAX-RS 1.1
– CDI 1.0
● Summary
5. Antonio Goncalves
● Freelance software architect
● Former BEA consultant
● Author (Java EE 5 and Java EE 6)
● JCP expert member
● Co-leader of the Paris JUG
● Les Cast Codeurs podcast
● Java Champion
6. Alexis Moussine-Pouchkine
● GlassFish Ambassador at Sun Microsystems
● 10-year Sun and AppServer veteran
● Speaker at multiple conferences
● Your advocate for anything GlassFish
7. Agenda
● Overview of EE 6 and GlassFish v3
● Dive into some specs & demos
– JPA 2.0
– Servlet 3.0
– EJB 3.1
– JSF 2.0
– Bean Validation 1.0
– JAX-RS 1.1
– CDI 1.0
● Summary
9. GlassFish v3
http://glassfish.org
● The Reference Impl. (RI) for Java EE 6
– Home of Metro, Grizzly, Jersey, Mojarra and
other sub-projects
● Yet, production-quality and open source
– Fast growing number of (large) production
deployments
● Modular (OSGi) and Extensible (HK2)
● Developer friendly
● Final as of December!
10. May 1998
Project JPE
Dec 1999
10 specs
J2EE 1.2
Enterprise
Application
Servlet
JSP
EJB
JMS
RMI/IIOP
Sept 2001
13 specs
J2EE 1.3
Robust
Scalable
CMP
JCA
Nov 2003
20 specs
J2EE 1.4
Web Services
WS
Management
Deployment
May 2006
23 specs
Java EE 5
Ease of
development
Annotations
EJB 3
JPA 1.0
WS-*
JSF
Q4 2009
28 specs
Java EE 6
Ease of
development
(web)
EJB 3.1
JPA 2.0
Servlet 3.0
JSF 2.0
JAX-RS 1.1
JCDI 1.0
@Inject
Bean Validat°
Web Profile
Managed
Bean
A brief history
11. Pruning (Soon less specs)
● Marks specifications optional in next version
● Pruned in Java EE 6
● Entity CMP 2.x
● JAX-RPC
● JAX-R
● JSR 88 (Java EE Application Deployment)
● Might disappear from Java EE 7
● Vendors may decide to keeps them...
● … or offer the delta as a set of modules
13. Web Profile 1.0
● Subset of full platform
● For web development
– Packages in a war
● Separate specification
● Evolves at its own pace
● Others will come
– Minimal (Servlet/JSP)
– Portal....
JSF 2.0
Servlet 3.0
JSP 2.2
EL 2.2
JSTL 1.2
EJB Lite 3.1
Managed Beans 1.0
Interceptors 1.1
JTA 1.1
JPA 2.0
Bean Validation 1.0
CDI 1.0
@Inject 1.0
14. EJB Lite
● Subset of the EJB 3.1 API
● Used in Web profile
● Packaged in a war
Local Session Bean
Injection
CMT / BMT
Interceptors
Security
Message Driven Beans
EJB Web Service Endpoint
RMI/IIOP Interoperability
Remote interface
EJB 2.x
Timer service
CMP / BMP
15. Portable JNDI names
● Client inside a container (use DI)
@EJB Hello h;
● Client outside a container
Context ctx = new InitialContext();
Hello h = (Hello) ctx.lookup(xyz);
● Portable JNDI name is specified
java:global/foo/bar/HelloEJB
16. Portable JNDI names
● OrderBean implements Order packaged
in orderejb.jar within orderapp.ear
● java:global/orderapp/orderejb/OrderBean
java:global/orderapp/orderejb/OrderBean!
org.foo.Order
● java:app/orderejb/OrderBean
java:app/orderejb/OrderBean!
com.acme.Order
● java:module/OrderBean
java:module/OrderBean!org.foo.Order
Fully-qualified interface name
Usable from any application in the container
17. Managed Beans 1.0
● Inspired (in part) by JSF
● Separate spec shipped with Java EE 6
● Container-managed POJOs
● Support a small set of basic services
● Injection (@Resource...)
● Life-cycle (@PostConstruct, @PreDestroy)
● Interceptor (@Interceptor, @AroundInvoke)
● Lightweight component model
18. Managed Beans 1.0
@javax.annotation.ManagedBean
public class MyPojo {
@Resource
private Datasource ds;
@PostConstruct
private void init() {
....
}
@Interceptors(LoggingInterceptor.class)
public void myMethod() {...}
}
JSR 250
Commons annotations
20. DEMO 01
Write a simple Managed Bean with
Lifecycle callback annotations and an interceptor
21. Agenda
● Overview of EE 6 and GlassFish v3
● Dive into some specs & demos
– JPA 2.0
– Servlet 3.0
– EJB 3.1
– JSF 2.0
– Bean Validation 1.0
– JAX-RS 1.1
– CDI 1.0
● Summary
22. JPA 2.0
● Evolves separately from EJB now
– JSR 317
● Richer mappings
● Richer JPQL
● Standard config options
● Criteria API
● ...
23. Richer mapping
● Collection of embeddables and basic types
● Not just collection of JPA entities
● Multiple levels of embeddables
● More flexible support for Maps
● Keys, values can be one of : entities,
embeddables or basic types
● More relationship mapping options
● Unidirectional 1-many foreign key mappings
24. Collections of Embeddable Types
@Embeddable public class BookReference {
String title;
Float price;
String description;
String isbn;
Integer nbOfPage;
...
}
@Entity public class ListOfGreatBooks {
@ElementCollection
protected Set<BookReference> javaBooks;
...
}
25. Standard properties
● In persistence.xml :
● javax.persistence.jdbc.driver
● javax.persistence.jdbc.url
● javax.persistence.jdbc.user
● javax.persistence.jdbc.password
● javax.persistence.lock.scope
● javax.persistence.lock.timeout
26. Criteria API
● Strongly typed criteria API
● Object-based query definition objects
● (Rather than JPQL string-based)
● Operates on the meta-model
● Browse the structure of a Persistence Unit
● Dynamically:
EntityManager.getMetamodel()
● Statically:
Each entity X has a metamodel class X_
● CriteriaQuery as a query graph
27. Criteria API
EntityManager em = ...;
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Book> query =
cb.createQuery(Book.class);
Root<Book> book = query.from(Book.class);
query.select(book)
.where(cb.equal(book.get("description"), ""));
SELECT b
FROM Book b
WHERE b.description IS EMPTY
28. Criteria API
Type-safe
EntityManager em = ...;
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Book> query =
cb.createQuery(Book.class);
Root<Book> book = query.from(Book.class);
query.select(book)
.where(cb.isEmpty(book.get(Book_.description)));
Statically generated
JPA 2.0 MetaModel
35. A servlet 3.0 example
@WebServlet(urlPatterns={"/MyApp"})
public class MyServlet extends HttpServlet {
public void doGet (HttpServletRequest req,
HttpServletResponse res){
....
}
}
● Same for @WebFilter
and @WebListener
web.xml is optional
36. Pluggability
● Enable use of frameworks without web.xml
● Fragment the web.xml to allow frameworks to
be self-contained in their own jar
● Dynamic container extension framework
using ServletContainerInitializer
● Simple JAR library can manipulate
ServletContext at startup
● /META-INF/resources in any JAR to
serve resources (applies to libraries)
37. Pluggability
Web Fragments
● Fragments are similar to web.xml
● <web-fragment> instead of <web-app>
● Declare their own servlets, listeners and filters
● Annotations and web fragments are merged
following a configurable order
● JARs need to be placed in WEB-INF/lib
● and use /META-INF/web-fragment.xml
● Overridden by main web.xml
40. And more...
● Async support (Comet-style)
● Configuration API
– Add and configure Servlet, Filters, Listeners
– Add security constraints
– Using ServletContext API
● File upload (similar to Apache File Upload)
● Configure cookie session name
● Security with @ServletSecurity
41. Agenda
● Overview of EE 6 and GlassFish v3
● Dive into some specs & demos
– JPA 2.0
– Servlet 3.0
– EJB 3.1
– JSF 2.0
– Bean Validation 1.0
– JAX-RS 1.1
– CDI 1.0
● Summary
42. EJB Optional Local Interface
● @Local, @Remote
● Interfaces are not always needed
– Only for local interfaces
– Remote interfaces are now optional !
@Stateless
public class HelloBean {
public String sayHello() {
return "Hello Nancy!";
}
}
43. Packaging in a war
foo.ear
com/acme/Foo.class
WEB-INF/web.xml
WEB-INF/classes
com/acme/FooServlet.class
com/acme/FooEJB.class
com/acme/FooEJBLocal.class
lib/foo_common.jar
foo_web.war
foo_ejb.jar
foo.war
WEB-INF/classes
com/acme/Foo.class
com/acme/FooServlet.class
com/acme/FooEJB.class
44. Asynchronous calls
● How to have asynchronous call in EJBs ?
– JMS is more about sending messages
– Threads and EJB's don't integrate well
● @Asynchronous
– Applicable to any EJB type
– Best effort, no delivery guarantee
● Method returns void or Future<T>
– javax.ejb.AsyncResult helper class :
return new AsyncResult<int>(result)
45. Asynchronous calls
@Stateless
public class OrderBean {
public void createOrder() {
Order order = persistOrder();
sendEmail(order); // fire and forget
}
public Order persistOrder() {...}
@Asynchronous
public void sendEmail(Order order) {...}
}
46. Timer Service
● Programmatic and Calendar based scheduling
– « Last day of the month »
– « Every five minutes on Monday and Friday »
● Cron-like syntax
– second [0..59], minute[0..59], hour[0..23]...
– dayOfMonth[1..31]
– dayOfWeek[0..7] or [sun, mon, tue..]
– Month[0..12] or [jan,feb..]
47. Timer Service
@Stateless
public class WakeUpBean {
@Schedule(dayOfWeek="Mon-Fri", hour="9")
void wakeUp() {
...
}
}
Deploy (potentially in a WAR file) is all you need
No container config required
50. Singleton
● New component
– No/local/remote interface
● Follows the Singleton pattern
– One single EJB per application per JVM
● Used to share state in the entire application
– State not preserved after container shutdown
● Added concurrency management
– Default is single-threaded
– @ConcurrencyManagement
51. Singleton
@Singleton
public class CachingBean {
private Map cache;
@PostConstruct void init() {
cache = ...;
}
public Map getCache() {
return cache;
}
public void addToCache(Object key, Object val) {
cache.put(key, val);
}
}
54. Embeddable Container
● API allowing to :
– Initialize a container
– Get container ctx
– …
● Can run in any Java SE environment
– Batch processing
– Simplifies testing
– Just a jar file in your classpath
Java SE
Transaction
manager
Security
system
Messaging
engine
EJB 3.1 Embedded container
57. And more...
● Interceptors and InterceptorBinding
● Singletons can be chained
● Non persistent timer
● @StatefulTimeout
● ...
58. Agenda
● Overview of EE 6 and GlassFish v3
● Dive into some specs & demos
– JPA 2.0
– Servlet 3.0
– EJB 3.1
– JSF 2.0
– Bean Validation 1.0
– JAX-RS 1.1
– CDI 1.0
● Summary
59. JavaServer Faces (JSF) 2.0
● The standard component-oriented MVC
framework
● Part of Java EE 5
● Part of Java EE 6 and Web Profile
– Other frameworks can rely on EE 6 extensibility
● Deserves its 2.0 version number
– New features, issues fixed, performance focus
● Fully available today in Mojarra 2.0.2
– Production-quality implementation
– Part of GlassFish v3
61. Facelets now preferred VDL
● Facelets (XHTML) as alternative to JSP
– Based on a generic View Description
Language (VDL)
– Can't add Java code to XHTML page
(and “that's a good thing!”™)
● Pages are usable from basic editors
● IDEs offer traditional value-add:
– Auto-completion (EL)
– (Composite) Component management
– Project management, testing, etc...
62. JSF Navigation
● JSF 1.x uses faces-config.xml rules
● Implicit Navigation
● Conditional Navigation
● New <if> tag in EL
● Redirect
63. Setup, configuration
● JSF 2.0 does not mandate Servlet 3.0
– Servlet 2.5 containers will run JSF 2.0
– web.xml may be optional depending on runtime
● faces-config.xml now optional
– @javax.faces.bean.ManagedBean
– Not required with JSR 299
– Navigation can now belong to the page
(<navigation-rules> become optional)
67. JSF Components
● Rather healthy component market
● Pretty good IDE support but...
● Building your own components with JSF 1.x
was (much) harder than it should be
● Bummer for an MVC “component”
framework...
68. ● Using JSF 1.x
● Implement UIComponent, markup in renderer,
register in faces-config.xml, add tld, ...
● With JSF 2.0
● Single file, no Java code needed
● Use XHTML and JSF tags to create components
<html xmlns:cc="http://java.sun.com/jsf/composite">
<cc:interface>
<cc:attribute ...>
<cc:implementation>
● Everything else is auto-wired
JSF Composite Component
69. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:composite="http://java.sun.com/jsf/composite">
<!-- INTERFACE -->
<composite:interface>
<composite:attribute name="param"/>
</composite:interface>
<!-- IMPLEMENTATION -->
<composite:implementation>
<h:outputText value="Hello there, #{cc.attrs.param}"/>
</composite:implementation>
</html>
./web/resources/ezcomp/mycomponent.xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:custom="http://java.sun.com/jsf/composite/ezcomp">
<h:body>
<custom:mycomponent param="jFokus attendees"/>
</h:body>
</html>
Using the
component
Defining the
component
Implicit EL object
75. And more...
● Validation delegated to BeanValidation
● Easier resources management
● Better error reporting
● New managed bean scope (View)
● Groovy support (Mojarra)
● Bookmarkable URLs
● Templating : define and apply layouts
● Project stages (dev vs. test vs. production)
● ...
76. Agenda
● Overview of EE 6 and GlassFish v3
● Dive into some specs & demos
– JPA 2.0
– Servlet 3.0
– EJB 3.1
– JSF 2.0
– Bean Validation 1.0
– JAX-RS 1.1
● Summary
77. Bean Validation 1.0
● Enable declarative validation in your
applications
● Constrain Once, Validate Anywhere
– restriction on a bean, field or property
– not null, size between 1 and 7, valid email...
● Standard way to validate constraints
● Integration with JPA 2.0 & JSF 2.0
78. Bean Validation 1.0
public class Address {
@NotNull @Size(max=30,
message="longer than {max} characters")
private String street1;
...
@NotNull @Valid
private Country country;
}
public class Country {
@NotNull @Size(max=20)
private String name;
...
}
request recursive
object graph
validation
82. And more...
● Group subsets of constraints
● Partial validation
● Order constraint validations
● Create your own
● Bootstrap API
● Messages can be i18n
● ...
83. Agenda
● Overview of EE 6 and GlassFish v3
● Dive into some specs & demos
– JPA 2.0
– Servlet 3.0
– EJB 3.1
– JSF 2.0
– Bean Validation 1.0
– JAX-RS 1.1
– CDI 1.0
● Summary
84. JAX-RS 1.1
● High-level HTTP API for RESTful Services
● POJO and Annotations Based
● API also available
● Maps HTTP verbs (Get, Post, Put, Delete...)
● JAX-RS 1.0 has been released in 2008
● JAX-RS 1.1 integrates with EJBs
(and more generally with Java EE 6)
85. Hello World
@Path("/helloworld")
public class HelloWorldResource {
@GET
@Produces("text/plain")
public String sayHello() {
return "Hello World";
}
}
GET http://example.com/helloworld
86. Hello World
GET /helloworld HTTP/1.1
Host: example.com
Accept: text/plain
HTTP/1.1 200 OK
Date: Wed, 12 Nov 2008 16:41:58 GMT
Server: GlassFish v3
Content-Type: text/plain; charset=UTF-8
Hello World
Request
Response
87. Different Mime Types
@Path("/helloworld")
public class HelloWorldResource {
@GET @Produces("image/jpeg")
public byte[] paintHello() {
...
@GET @Produces("text/plain")
public String displayHello() {
...
@POST @Consumes("text/xml")
public void updateHello(String xml) {
...
}
88. Parameters & EJBs
@Path("/users/{userId}")
@Stateless
public class UserResource {
@PersistenceContext
EntityManage em;
@GET @Produces("text/xml")
public String getUser(@PathParam("userId")
String id){
User u = em.find(User.class, id)
...
}
}
91. And more...
● Different parameters (@MatrixParam,
@QueryParam, @CookieParam ...)
● Support for @Head and @Option
● Inject UriInfo using @Context
● JAX-RS servlet mapping with
@ApplicationPath("rs")
● ...
92. Agenda
● Overview of EE 6 and GlassFish v3
● Dive into some specs & demos
– JPA 2.0
– Servlet 3.0
– EJB 3.1
– JSF 2.0
– Bean Validation 1.0
– JAX-RS 1.1
– CDI 1.0
● Summary
93. Injection in Java EE 5
● Common Annotation
● @Resource
● Specialized cases
● @EJB, @WebServicesRef,
@PersistenceUnit …
● Requires managed objects
● EJB, Servlet and JSF Managed Bean in EE 5
● Also in any Java EE 6's
javax.annotation.ManagedBean
94. Injection in Java EE 6
CDI (JSR 299)
&
DI (JSR 330)
Inject just about anything anywhere...
...yet with strong typing
95. The tale of 2 dependency JSRs
● Context & Dependency Injection for Java EE
● Born as WebBeans, unification of JSF and EJB
● “Loose coupling, strong typing"
● Weld as the reference implementation, others to
follow (Caucho, Apache)
● Dependency Injection for Java (JSR 330)
● Lead by Google and SpringSource
● Minimalistic dependency injection, @Inject
● Applies to Java SE, Guice as the reference impl.
● Both aligned and part of Java EE 6 Web Profile
96. @Named and @Inject
● CDI requires a WEB-INF/beans.xml file
● Can be empty
● Beans auto-discovered at startup
● @Named makes the bean available to EL
● Prefer @Named to @ManagedBean (JSF or JSR 250)
● Use @Inject to inject :)
● @Inject IsbnGenerator generator;
● @Resource still around
● Use it for DB connexions, queues, RA's
● Anything App-managed: use @Inject
102. Contexts
The 'C' in CDI
● Built-in “Web” Scopes :
● @RequestScoped
● @SessionScoped*
● @ApplicationScoped*
● @ConversationScoped*
● Other Scopes
● @Dependent is the default pseudo-scope for
un-scoped beans (same as Managed Beans)
● Build your own @ScopeType
● Clients need not be scope-aware
*: requires Serializable
fields to enable passivation
103. @ConversationScoped
● A conversation is :
● explicitly demarcated
● associated with individual browser tabs
● accessible from any JSF request
@Named
@ConversationScoped
public class ItemFacade implements Serializable {
@Inject Conversation conversation;
...
conversation.begin(); // long-running
...
conversation.end(); // schedule for destruction
105. Various
● CDI from a Servlet :
public class Login extends HttpServlet {
@Inject Credentials credentials;
@Inject Login login;
● Similar integration with other Java EE APIs
● Producer methods
● Qualify and expose “random” method
● Fields too
106. But Wait! There's more...
● Alternatives
● @Alternative annotation on various impl.
● Interceptors & Decorators
● Loosely-coupled orthogonal (technical) interceptors
● @Decorator bound to given interface
● Stereotypes (@Stereotype)
● Captures any of the above common patterns
● Events
● Loosely-coupled (conditional) @Observable events
● BeanManager API (Injection metamodel)
● Define/modify beans and injection points
107. To learn more about CDI
● Not (yet) covered in Antonio's book
● The CDI specification is terse (92 pages)
but more aimed at implementers
● Try one of the following :
● Java EE 6 tutorial (Part V)
● JBoss Weld documentation
● Java EE 6 SDK Samples
● Java EE 6 & GlassFish v3 Virtual Conference
108. Summary
● You've quickly seen
– New concepts
– New specifications
– New features for existing specifications
● Want to know more ?
109. Thanks for your attention!
● http://java.sun.com/javaee
● http://jcp.org/en/jsr/summary?id=316
● Java EE 6 and GlassFish v3 Virtual Conference
http://www.sun.com/events/javaee6glassfishv3/
virtualconference/index.jsp
● “Introducing the Java EE 6 Platform” article
http://java.sun.com/developer/technicalArticles/JavaEE/
JavaEE6Overview.html
● http://glassfish.org
● http://beginningee6.kenai.com/ (tutorial code)
● http://javaee-patterns.kenai.com/ (Adam Bien)