The session details are accessible over here: http://www.eventreg.com/cc250/sessionDetail.jsp?SID=314613
Session abstract
Nowadays, every platform considers having the "OSGi supported" checkbox ticked and offers "easy" and "smooth" migration from the classical Java EE world to the new "modular" future. In spite of the multiple guidelines and best practices, migrating from a monolithic Java EE application to OSGi remains a pain and reveals a number of hidden and time-consuming pitfalls and hurdles. The session will guide you through the usual problems that every project faces on its way to holy modularity, providing helpful tips and tricks on how to quickly find your way through the maze of NoClassDeffFound, ClassCast, and other OSGi-specific errors.
The document discusses OSGi and modularity. It describes how OSGi allows software to be built from independent components called bundles that have well-defined dependencies and interfaces. This modularity improves productivity, reduces complexity, and makes applications easier to maintain and extend over time. The OSGi framework provides core services like class loading, life cycle management, and a service registry that bundles can use to interact, allowing applications to be dynamically assembled at runtime from independent bundles.
The document discusses OSGi and modularity. It describes how OSGi achieves low coupling and high cohesion through encapsulation using modules/bundles that can be installed, started/stopped and updated independently. Key concepts covered include classes, packages and bundles and how they relate. Services, components and dependencies between bundles are also summarized.
Java EE | Modular EJBs for Enterprise OSGi | Tim WardJAX London
This document discusses integrating Enterprise Java Beans (EJBs) with the OSGi framework. It covers how EJBs can be exposed as OSGi services, issues around classloading and dependencies, and how the Apache Aries project integrates transaction management and Java Persistence API support for modular EJBs running in OSGi. It provides an example of a comment service implemented as an EJB bundle in Aries to demonstrate that the approach works.
The document summarizes the evolution of Java 7 including:
1. An overview of the history and prerequisites that led to the creation of Java, including how it was initially developed in 1991 for consumer devices.
2. A discussion of the different versions of Java released from JDK 1.0 to Java 7, highlighting improvements in each version.
3. Examples demonstrating new features in Java 7 like strings in switch statements, binary literals, multi-catch exceptions, and try-with-resources statements.
A presentation about OSGi and Java modularity given on DevCon 2009. It lays out what is wrong with Java with respect to modularity and how OSGi fixes these flaws.
OSGi is a module system and service platform for Java that aims to overcome limitations of Java like poor support for logical partitioning, dynamic updates, and versioning at runtime. The OSGi Service Platform Architecture consists of bundles that execute within an OSGi framework and register services. The framework manages the bundles' lifecycle and provides a service layer for bundles to discover and use services. OSGi specifications have evolved over multiple releases to define the core framework and provide standardized services.
This document provides an overview of Apache Camel, an open source integration framework. It discusses Camel's architecture, including routes, endpoints and components. It also describes Camel's domain specific language for defining routes. Finally, it provides a sample route that reads an XML file from FTP, transforms it using XSLT, and sends it to a JMS queue.
This document summarizes new features in Java SE 7 and Java EE 6. For Java SE 7, it outlines language changes like annotations on types and Project Coin small changes, as well as core changes like modularity support and concurrency updates. It describes VM changes like compressed pointers and garbage collection improvements. For Java EE 6, it discusses goals like rightsizing and extensibility, and new technologies like CDI and Bean Validation. It provides overviews of updated technologies and how profiles target specific capabilities.
The document discusses OSGi and modularity. It describes how OSGi allows software to be built from independent components called bundles that have well-defined dependencies and interfaces. This modularity improves productivity, reduces complexity, and makes applications easier to maintain and extend over time. The OSGi framework provides core services like class loading, life cycle management, and a service registry that bundles can use to interact, allowing applications to be dynamically assembled at runtime from independent bundles.
The document discusses OSGi and modularity. It describes how OSGi achieves low coupling and high cohesion through encapsulation using modules/bundles that can be installed, started/stopped and updated independently. Key concepts covered include classes, packages and bundles and how they relate. Services, components and dependencies between bundles are also summarized.
Java EE | Modular EJBs for Enterprise OSGi | Tim WardJAX London
This document discusses integrating Enterprise Java Beans (EJBs) with the OSGi framework. It covers how EJBs can be exposed as OSGi services, issues around classloading and dependencies, and how the Apache Aries project integrates transaction management and Java Persistence API support for modular EJBs running in OSGi. It provides an example of a comment service implemented as an EJB bundle in Aries to demonstrate that the approach works.
The document summarizes the evolution of Java 7 including:
1. An overview of the history and prerequisites that led to the creation of Java, including how it was initially developed in 1991 for consumer devices.
2. A discussion of the different versions of Java released from JDK 1.0 to Java 7, highlighting improvements in each version.
3. Examples demonstrating new features in Java 7 like strings in switch statements, binary literals, multi-catch exceptions, and try-with-resources statements.
A presentation about OSGi and Java modularity given on DevCon 2009. It lays out what is wrong with Java with respect to modularity and how OSGi fixes these flaws.
OSGi is a module system and service platform for Java that aims to overcome limitations of Java like poor support for logical partitioning, dynamic updates, and versioning at runtime. The OSGi Service Platform Architecture consists of bundles that execute within an OSGi framework and register services. The framework manages the bundles' lifecycle and provides a service layer for bundles to discover and use services. OSGi specifications have evolved over multiple releases to define the core framework and provide standardized services.
This document provides an overview of Apache Camel, an open source integration framework. It discusses Camel's architecture, including routes, endpoints and components. It also describes Camel's domain specific language for defining routes. Finally, it provides a sample route that reads an XML file from FTP, transforms it using XSLT, and sends it to a JMS queue.
This document summarizes new features in Java SE 7 and Java EE 6. For Java SE 7, it outlines language changes like annotations on types and Project Coin small changes, as well as core changes like modularity support and concurrency updates. It describes VM changes like compressed pointers and garbage collection improvements. For Java EE 6, it discusses goals like rightsizing and extensibility, and new technologies like CDI and Bean Validation. It provides overviews of updated technologies and how profiles target specific capabilities.
The document provides an overview of Ruby on Rails, including its principles, building blocks, caching, security, and community support. It discusses how Rails enables rapid application development through conventions over configurations, and the don't repeat yourself principle. Key components like Active Record and different caching techniques are explained. The document also highlights various databases, platforms, and tools that support Ruby on Rails development.
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.
The document introduces JCR 2.0 and its top 10 new features compared to JCR 1.0. Key highlights include:
1) Query extensions with the Abstract Query Model and Java Query Object Model that replace XPath queries.
2) Support for access control lists and policies.
3) Integration with records management systems through retention policies and legal holds.
4) Simplified linear versioning model.
5) Support for lifecycle management and expressing transitions between states.
6) A standardized way to register new and modified node types.
7) New properties and node types were added.
8) Standardized creation and removal of workspaces.
9
OSGi-enabled Java EE Applications using GlassFishArun Gupta
The document discusses OSGi-enabled Java EE applications in GlassFish. It provides an overview of OSGi and how it is used in GlassFish to create modular applications. Key points include:
- OSGi allows applications to be broken into bundles that can be installed, uninstalled, started and stopped dynamically.
- GlassFish runs on top of OSGi and all GlassFish modules are OSGi bundles. This allows for a modular platform and custom application servers.
- OSGi specifications like Declarative Services allow OSGi services to be used in Java EE applications through JNDI lookups.
- Hybrid applications can be both OSGi bundles and Java EE archives, leveraging capabilities of both platforms.
This is a presentation given in a Java Open day conducted by Trainologic.
Trainologic shares its training content for free at trainologic.org you can find many more free full course there.
The document discusses Java performance and execution engines. It describes how the Java bytecode is executed via an interpreter or just-in-time (JIT) compiler. The JIT compiler compiles bytecode to native machine code for improved performance. It also discusses IBM's JIT compiler, how it uses mixed mode interpretation, and its various optimization phases and techniques.
After a short introduction to object orientation, this lecture gives an overview of the Smalltalk programming language.
This lecture was given on November 10, 2008, during the summer school on programming languages (http://pleiad.dcc.uchile.cl/pl2008/)
Just a brief introduction I have given my team to get into the OSGi topic. Guess it is not the highest academic level, but should be enough to understand the fundamentals of OSGi.
The document discusses thread synchronization in Java. It covers Java threads, synchronization mechanisms like monitors and locks, cooperation between threads using wait() and notify(), and mutual exclusion with synchronized blocks and methods. It also describes lightweight locking techniques used in Hotspot like biased locking, and thin locks and lock reservation in IBM's JVM.
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011Arun Gupta
This document discusses OSGi-enabled Java applications in GlassFish. It provides an overview of OSGi and how it is used in GlassFish to provide modularity. Key points include:
- OSGi allows applications to be broken into modules or bundles that can be installed, uninstalled, started and stopped dynamically without restarting the container.
- In GlassFish, all modules are OSGi bundles which run on top of the OSGi framework. This provides stronger modularity compared to a non-OSGi application server.
- Benefits of using OSGi in GlassFish include demanding stronger modularity, enabling custom tailored application servers, and lazy loading of bundles based on usage patterns.
Java Performance Fundamental 세미나 교재입니다
2장은 JVM의 메모리 구조인 Runtime Data Areas에 대한 설명을 하고 있습니다. 크게는4개의 모듈로 나누어 지는 Runtime Data Areas를 부분 별로 자세히 다루고 있습니다. 그리고 나서 우리가 프로그램을 수행할 때 Runtime Data Areas에서는 어떻게 데이터들이 움직이는 지를 간단한 예제를 통해 알아보고자 합니다.
* Runtime Data Areas의 구조
* PC Register
* Java Virtual Machine Stacks
* Native Method Stack
* Method Area
* Java Heap
* Runtime Data Areas Simulation
Running your Java EE applications in the CloudArun Gupta
This document discusses running Java EE 6 applications in the cloud using various platforms. It provides an overview of Java EE 6 and how it is well-suited for cloud deployments. It then discusses specific implementations on Amazon EC2, RightScale, Elastra, Joyent, and GlassFish distributions and roadmaps.
The document discusses Java performance fundamentals, including the Java architecture, programming language, class file format, API, and virtual machine (JVM). It describes how Java source code is compiled to bytecode, how the JVM executes bytecode, and how Java achieves platform independence through the use of the JVM. Key components of the Java architecture outlined include the Java programming language, class file format, API, and JVM.
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.
Building Content Applications with JCR and OSGiCédric Hüsler
This document outlines an agenda for a presentation on building content applications with the Java Content Repository (JCR) and OSGi. The presentation will cover getting to know the JCR API, common implementations like Jackrabbit and Apache Sling, developing RESTful applications on JCR with OSGi, and future developments like JCR 333 and Jackrabbit 3. Hands-on examples will also be provided to demonstrate server-side OSGi development and using the Apache Sling Scripting Engine.
Java Performance Fundamental 세미나 교재입니다. 3장은 Garbage Collection에 대해 설명하고 있습니다. 먼저 JVM에서 사용하는 Garbage Collection 뿐만 아니라 일반적인 Garbage Collection의 Algorithm을 상세히 알아봅니다. 그 후 Hotspot JVM의 Heap구조와 Garbage Collector를 설명하고 Generation별로 어떻게 동작하는 지에 대해 설명합니다. 이어 IBM JVM에 대한 Heap 구조와 Garbage Collector에 대해서도 설명합니다.
* Garbage Collection 이란?
* Garbage Collection 의 대상
* Garbage Collection 의 기본 Algorithm
* Hotspot JVM의 Garbage Collection
o Serial Collector
o Incremental Collector
o Parallel Collector
o CMS Collector
o Parallel Compaction Collector
o Garbage First Collector
* IBM JVM의 Garbage Collection
o Optimize for Throughput Collector
o Optimize for Pause Time Collector
o Generational Concurrent Collector
o Subpool Collector
Open Source Compiler Construction for the JVMTom Lee
This document discusses building a compiler for a simple language called "Awesome" that targets the Java Virtual Machine (JVM). It recommends writing a stub code generator first for quick feedback before building the full compiler. The compiler will use Scala parser combinators to parse the input into an abstract syntax tree (AST) and then walk the AST to generate equivalent JVM bytecode using the Bytecode Engineering Library (BCEL). The document outlines the overall compiler architecture and next steps to expand the language features supported by the compiler.
This document discusses using Java from Ruby with JRuby IRB. It provides an introduction to JRuby and demonstrates how to load Java support and libraries, import Java classes, refer to and instantiate Java objects, implement Java interfaces, call static methods and fields, perform type conversions, invoke overloaded methods, and gives a complex example using the Akka framework to calculate Pi. It also discusses Maven integration, directory layout, and testing frameworks like RSpec and Cucumber that can be used.
My goals have been:
- focusing on several project areas, where you can use jruby successfully
- share the experience that I made using ruby in the last years
- proove that things can be done easier as they are done in typical java projects
With the release of OSGi Enterprise 4.2, the role of OSGi has been extended into the enterprise, alongside what has traditionally been developed using JEE. This session will cover the best practices for developing OSGi Enterprise applications and OSGi bundles in order to utilise the full power of OSGi technology, followed by a demo of using these best practices to assembly an OSGi application. At the end of the session, you will be able to learn how to use OSGi in a recommended way.
Apache Camel is a powerful open source integration framework that allows developers to focus on business logic by hiding complexity. It supports over 80 components and 19 data formats, and provides a domain-specific language for integration patterns in Java, XML, and Scala. Camel routes can be run in standalone applications or deployed to various containers.
JBoss AS 7 est sorti pendant l’été 2011. Cette version est une véritable révolution pour tous les utilisateurs JBoss : temps de démarrage et de déploiement record, techniques d’administration renouvelées, configuration simplifiée et plus expressive,…
Dans cette présentation, j’explique ces nouveautés et je les montre avec des vrais morceaux de ligne de commande et peu de cloud.
The document provides an overview of Ruby on Rails, including its principles, building blocks, caching, security, and community support. It discusses how Rails enables rapid application development through conventions over configurations, and the don't repeat yourself principle. Key components like Active Record and different caching techniques are explained. The document also highlights various databases, platforms, and tools that support Ruby on Rails development.
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.
The document introduces JCR 2.0 and its top 10 new features compared to JCR 1.0. Key highlights include:
1) Query extensions with the Abstract Query Model and Java Query Object Model that replace XPath queries.
2) Support for access control lists and policies.
3) Integration with records management systems through retention policies and legal holds.
4) Simplified linear versioning model.
5) Support for lifecycle management and expressing transitions between states.
6) A standardized way to register new and modified node types.
7) New properties and node types were added.
8) Standardized creation and removal of workspaces.
9
OSGi-enabled Java EE Applications using GlassFishArun Gupta
The document discusses OSGi-enabled Java EE applications in GlassFish. It provides an overview of OSGi and how it is used in GlassFish to create modular applications. Key points include:
- OSGi allows applications to be broken into bundles that can be installed, uninstalled, started and stopped dynamically.
- GlassFish runs on top of OSGi and all GlassFish modules are OSGi bundles. This allows for a modular platform and custom application servers.
- OSGi specifications like Declarative Services allow OSGi services to be used in Java EE applications through JNDI lookups.
- Hybrid applications can be both OSGi bundles and Java EE archives, leveraging capabilities of both platforms.
This is a presentation given in a Java Open day conducted by Trainologic.
Trainologic shares its training content for free at trainologic.org you can find many more free full course there.
The document discusses Java performance and execution engines. It describes how the Java bytecode is executed via an interpreter or just-in-time (JIT) compiler. The JIT compiler compiles bytecode to native machine code for improved performance. It also discusses IBM's JIT compiler, how it uses mixed mode interpretation, and its various optimization phases and techniques.
After a short introduction to object orientation, this lecture gives an overview of the Smalltalk programming language.
This lecture was given on November 10, 2008, during the summer school on programming languages (http://pleiad.dcc.uchile.cl/pl2008/)
Just a brief introduction I have given my team to get into the OSGi topic. Guess it is not the highest academic level, but should be enough to understand the fundamentals of OSGi.
The document discusses thread synchronization in Java. It covers Java threads, synchronization mechanisms like monitors and locks, cooperation between threads using wait() and notify(), and mutual exclusion with synchronized blocks and methods. It also describes lightweight locking techniques used in Hotspot like biased locking, and thin locks and lock reservation in IBM's JVM.
OSGi-enabled Java EE Applications using GlassFish at JCertif 2011Arun Gupta
This document discusses OSGi-enabled Java applications in GlassFish. It provides an overview of OSGi and how it is used in GlassFish to provide modularity. Key points include:
- OSGi allows applications to be broken into modules or bundles that can be installed, uninstalled, started and stopped dynamically without restarting the container.
- In GlassFish, all modules are OSGi bundles which run on top of the OSGi framework. This provides stronger modularity compared to a non-OSGi application server.
- Benefits of using OSGi in GlassFish include demanding stronger modularity, enabling custom tailored application servers, and lazy loading of bundles based on usage patterns.
Java Performance Fundamental 세미나 교재입니다
2장은 JVM의 메모리 구조인 Runtime Data Areas에 대한 설명을 하고 있습니다. 크게는4개의 모듈로 나누어 지는 Runtime Data Areas를 부분 별로 자세히 다루고 있습니다. 그리고 나서 우리가 프로그램을 수행할 때 Runtime Data Areas에서는 어떻게 데이터들이 움직이는 지를 간단한 예제를 통해 알아보고자 합니다.
* Runtime Data Areas의 구조
* PC Register
* Java Virtual Machine Stacks
* Native Method Stack
* Method Area
* Java Heap
* Runtime Data Areas Simulation
Running your Java EE applications in the CloudArun Gupta
This document discusses running Java EE 6 applications in the cloud using various platforms. It provides an overview of Java EE 6 and how it is well-suited for cloud deployments. It then discusses specific implementations on Amazon EC2, RightScale, Elastra, Joyent, and GlassFish distributions and roadmaps.
The document discusses Java performance fundamentals, including the Java architecture, programming language, class file format, API, and virtual machine (JVM). It describes how Java source code is compiled to bytecode, how the JVM executes bytecode, and how Java achieves platform independence through the use of the JVM. Key components of the Java architecture outlined include the Java programming language, class file format, API, and JVM.
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.
Building Content Applications with JCR and OSGiCédric Hüsler
This document outlines an agenda for a presentation on building content applications with the Java Content Repository (JCR) and OSGi. The presentation will cover getting to know the JCR API, common implementations like Jackrabbit and Apache Sling, developing RESTful applications on JCR with OSGi, and future developments like JCR 333 and Jackrabbit 3. Hands-on examples will also be provided to demonstrate server-side OSGi development and using the Apache Sling Scripting Engine.
Java Performance Fundamental 세미나 교재입니다. 3장은 Garbage Collection에 대해 설명하고 있습니다. 먼저 JVM에서 사용하는 Garbage Collection 뿐만 아니라 일반적인 Garbage Collection의 Algorithm을 상세히 알아봅니다. 그 후 Hotspot JVM의 Heap구조와 Garbage Collector를 설명하고 Generation별로 어떻게 동작하는 지에 대해 설명합니다. 이어 IBM JVM에 대한 Heap 구조와 Garbage Collector에 대해서도 설명합니다.
* Garbage Collection 이란?
* Garbage Collection 의 대상
* Garbage Collection 의 기본 Algorithm
* Hotspot JVM의 Garbage Collection
o Serial Collector
o Incremental Collector
o Parallel Collector
o CMS Collector
o Parallel Compaction Collector
o Garbage First Collector
* IBM JVM의 Garbage Collection
o Optimize for Throughput Collector
o Optimize for Pause Time Collector
o Generational Concurrent Collector
o Subpool Collector
Open Source Compiler Construction for the JVMTom Lee
This document discusses building a compiler for a simple language called "Awesome" that targets the Java Virtual Machine (JVM). It recommends writing a stub code generator first for quick feedback before building the full compiler. The compiler will use Scala parser combinators to parse the input into an abstract syntax tree (AST) and then walk the AST to generate equivalent JVM bytecode using the Bytecode Engineering Library (BCEL). The document outlines the overall compiler architecture and next steps to expand the language features supported by the compiler.
This document discusses using Java from Ruby with JRuby IRB. It provides an introduction to JRuby and demonstrates how to load Java support and libraries, import Java classes, refer to and instantiate Java objects, implement Java interfaces, call static methods and fields, perform type conversions, invoke overloaded methods, and gives a complex example using the Akka framework to calculate Pi. It also discusses Maven integration, directory layout, and testing frameworks like RSpec and Cucumber that can be used.
My goals have been:
- focusing on several project areas, where you can use jruby successfully
- share the experience that I made using ruby in the last years
- proove that things can be done easier as they are done in typical java projects
With the release of OSGi Enterprise 4.2, the role of OSGi has been extended into the enterprise, alongside what has traditionally been developed using JEE. This session will cover the best practices for developing OSGi Enterprise applications and OSGi bundles in order to utilise the full power of OSGi technology, followed by a demo of using these best practices to assembly an OSGi application. At the end of the session, you will be able to learn how to use OSGi in a recommended way.
Apache Camel is a powerful open source integration framework that allows developers to focus on business logic by hiding complexity. It supports over 80 components and 19 data formats, and provides a domain-specific language for integration patterns in Java, XML, and Scala. Camel routes can be run in standalone applications or deployed to various containers.
JBoss AS 7 est sorti pendant l’été 2011. Cette version est une véritable révolution pour tous les utilisateurs JBoss : temps de démarrage et de déploiement record, techniques d’administration renouvelées, configuration simplifiée et plus expressive,…
Dans cette présentation, j’explique ces nouveautés et je les montre avec des vrais morceaux de ligne de commande et peu de cloud.
The document discusses a content repository, which is a generic API for content storage that provides CRUD functionality as well as versioning, transactions, and search capabilities. It describes how a content repository enforces simplicity, encourages standardization, and improves scalability. Examples of content repository implementations are provided, including Apache Jackrabbit and eXo Platform. Key features of content repositories are explored such as the content model, repository structure with workspaces and nodes/properties, and node type definitions.
soft-shake.ch - JBoss AS 7, la révolutionsoft-shake.ch
Alexis Hassler
JBoss AS 7 est sorti pendant l’été 2011. Cette version est une véritable révolution pour tous les utilisateurs JBoss : temps de démarrage et de déploiement record, techniques d’administration renouvelées, configuration simplifiée et plus expressive,…
Dans cette présentation, j’explique ces nouveautés et je les montre avec des vrais morceaux de ligne de commande.
http://soft-shake.ch/2011/conference/sessions/java/2011/09/13/jboss.html
This document provides an overview of several Java fundamentals topics including:
- Java 7 features like improved exception handling, strings as switch selectors, and try-with-resources blocks
- NIO.2 for easy file handling and asynchronous I/O using futures and callbacks
- Dependency injection and modern concurrency concepts like safety, liveness, and performance
- Building blocks for concurrency like atomic classes, locks, and thread pools
TorqueBox allows Ruby applications to leverage the Java Application Server and Java EE services by running Ruby code on JRuby and integrating it with the underlying Java platform. It provides services like messaging, caching, background jobs, and more to Ruby applications. TorqueBox handles the integration between Ruby frameworks/APIs and the corresponding Java APIs and services, allowing Ruby developers to build enterprise applications that scale.
The document discusses database-resident Java virtual machines (JVMs). It provides an overview of Oracle's database-resident JVM, how it differs from Sun's JVM, how it manages memory and classes differently. It also discusses how Oracle uses sessions to impose limits on Java usage, ensures security, and its commitment to and uses of database-resident JVM. It provides an example use case of Scotas' near real-time full text search implementation using database-resident JVM capabilities.
The document summarizes the OSGi DevCon 2010 conference. Key themes discussed included enterprise OSGi specifications, tools like Tycho moving to Eclipse, and the future of application servers and cloud computing with OSGi. Oracle discussed its new Java module system called Qwylt and how it may provide interoperability between OSGi and Jigsaw modules. Best practices for OSGi development were also covered.
Chisimba - introduction to practical demoDerek Keats
This document provides an overview of the Chisimba open-source eLearning platform:
- Chisimba is built on free and open-source software (FOSS) applications and uses FOSS development and collaboration tools.
- It has a modular architecture that allows new features and functionality to be added through plugins and modules.
- The system is highly configurable and customizable, allowing it to be used for different domains like eLearning, content management, and more.
TDC 2011: OSGi-enabled Java EE ApplicationArun Gupta
This document provides a summary of OSGi-enabled Java EE applications in GlassFish. It discusses how GlassFish uses OSGi to provide modularity and dynamic features. Key points include:
- GlassFish runs on top of OSGi and uses it to modularize server components and enable dynamic installation/uninstallation of bundles.
- Java EE applications can be packaged as OSGi bundles to take advantage of OSGi features while still using Java EE APIs. This allows for better modularity and dynamic deployment.
- Specifications like OSGi/HTTP Service, OSGi/Web Application, and OSGi/JTA integrate OSGi services into Java EE.
- Declarative services and injection simplify accessing
Monoliths are so 2001 – What you need is ModularityGraham Charters
Presentation given at IBM InterConnect 2015 conference. Describes:
- the motivation for modularity
- issues with modularity in Java
- introduction to OSGi and WebSphere OSGi Applications
- strategy for adopting OSGi with existing Java EE applications, using a sample (AcmeAir) as a use case
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.
Enterprise Java Web Application Frameworks Sample Stack ImplementationMert Çalışkan
This document provides an overview of enterprise Java web application frameworks and sample stack implementations. It discusses choosing between various UI, controller, model, and integration frameworks like JSF, Spring, Hibernate, and Apache CXF. It then demonstrates a sample stack using these technologies along with Maven, Eclipse, and other tools. The aim is to provide a scalable and high-performance MVC architecture using proven open source solutions.
Zotonic presentation Erlang Camp Boston, august 2011Arjan
I gave this presentation on friday August 12, 2011 in the John Hancock Conference center in Boston as the closing session of the 2-day Erlang Camp event.
When Two Worlds Collide: Java and Ruby in the Enterprisebenbrowning
When Two Worlds Collide: Java and Ruby in the Enterprise is a presentation about using Ruby and Java together in an enterprise environment. It introduces JRuby, which allows Ruby code to run on the Java Virtual Machine and integrate with Java. It then discusses TorqueBox, which allows Ruby applications to run on the JBoss Application Server alongside Java applications. TorqueBox provides Ruby interfaces to enterprise services like messaging, background jobs, caching, and more commonly found in Java application servers. The presentation argues that TorqueBox allows Ruby to be a first-class citizen alongside Java in the enterprise.
Introduction to JSR-283 at the magnolia user conference in Basel, Switzerland.
- A Content Repository?
- JCR History, Adoption
- Top 10 New Features
- Beyond the Spec (Demo)
- Future Plans
Visual COBOL Development for Unix and JavaMicro Focus
Do you want to reinvigorate your COBOL development environment for Unix? How about bringing your COBOL business logic into the Java ecosystem?
In this session we will investigate two major features of the Visual COBOL product line. You will see how the power of the Eclipse IDE can be used to develop your COBOL applications on remote Unix machines. You will also see how Java technologies can breathe new life into your COBOL code.
Haj 4344-java se 9 and the application server-1Kevin Sutter
Our presentation at InterConnect 2017 about Java SE 9 and our direct experiences with using it as our Java runtime for the WebSphere Liberty application server.
This document discusses cloud native technologies and the Kyma runtime. It provides an overview of the paradigm shift towards cloud native computing and industrial standardization. Kyma is introduced as an opinionated cloud native runtime based on Kubernetes that provides capabilities like system connectivity, service management, serverless functions, and event-based integrations. Kyma is designed to enable customization and extensibility both for applications deployed to SAP BTP and for on-premise deployments.
Gardener project allows companies to run fully-managed Kubernetes clusters at scale on any infrastructure (AWS, Azure, GCP, Alicloud, Packet Cloud, vSphere, bare metal) - both cloud and on-prem. It offers consistent and coherent experience with full brand of supported kubernetes versions.
Kyma: Extending Business systems with Kubernetes, Istio and <fill the blank>.SAP HANA Cloud Platform
In this talk, we look into an example of how to make previously simple things again simple. We introduce project Kyma: a side-by-side extension environment based on Kubernetes from the ground up, allowing developers to customize the functionality of enterprise systems, using business events and HTTP triggers. It makes use of Istio Service Mesh, benefits from Knative and relies on NATS for message routing. We've released it as open source project Kyma (https://kyma-project.io)
We go briefly across the technology stack, looking at each of the components and exploring what factors lead to the choice of technology and what alternatives we've left out of the equation. We also look into how that fits into the broader Cloud-native ecosystem and what potential synergies we see with other CNCF projects.
Over the last few years Kubernetes proved itself as the de-facto standard base for cross-cloud workload portability. In the session we’ll explore the benefits of managing Kubernetes at scale and using it as a reliable foundation for building enterprise software extension for SAP apps and beyond.
For building project Kyma - we wanted to use every cool new buzzword - that's how we ended up sitting on top of Kubernetes, Istio and Knative. And we really liked the experience, which lead to our subsequent involvement in the Knative project.
Options for running Kubernetes at scale across multiple cloud providersSAP HANA Cloud Platform
Kubernetes turned into the de-facto standard for scalable container orchestration. Nowadays - if you're dealing with Docker and containers and you don't play in the Kubernetes ecosystem - your relevance is questionable. There are many possible options for running Kubernetes across Amaxon, Azure and Google Cloud. The deck explores few of those, providing references and additional materials to explore.
The session aimed to introduce the concept of extending the different SAP Cloud solutions using SAP HANA Cloud Platform (#saphcp) applications. We went through the basics and as well explored different extensions examples for each of the mentioned solutions.
SAP TechEd 2015 | DEV109 | Extending Cloud Solutions from SAP using SAP HANA ...SAP HANA Cloud Platform
The SAP Cloud applications portfolio has rapidly expanded in the recent years and now includes the Ariba Business Network, SuccessFactors, Concur, Fieldglass solutions, the SAP Business One application, and the SAP Anywhere and SAP Cloud for Customer solutions, among many others. By using SAP HANA Cloud Platform, customers can build extension modules for all these cloud products using open data access APIs, while partners can create generic extensions, certify them with SAP, and publish them to the SAP AppCenter for customers to consume. The sessions outlines in more details the different possibilities already explored with each of the solutions listed above.
SAP D-Code/TechEd 2014|DEV203|Extending SuccessFactors using SAP HANA Cloud P...SAP HANA Cloud Platform
Already using SuccessFactors products and keen on becoming part of its partner ecosystem? This session shows how to start from scratch, build and deploy your first SuccessFactors extension and add a new flow or a complete new module to the system. The ways your company is going to differentiate from the competition out there is all in your hands.
Learn more in our openSAP course on the topic at https://open.sap.com/courses/hanacloud3 and get access to SAP HANA Cloud Platform at http://hcp.sap.com
SAP TechEd 2013: CD105: Extending SuccessFactors EmployeeCentral with apps on...SAP HANA Cloud Platform
This session showcased how an existing SuccessFactors Employee Central company's flows can be extended smoothly using applications either already available or freshly developed on the SAP HANA Cloud Platform. To illustrate the scenario, we will choose a particular use-case which Employee Central doesn’t cover, and see how we can address it.
To make life more interesting - it's now possible to run such an extension completely for free on SAP HANA Cloud Platform trial landscape - check this out for more details: https://github.com/SAP/cloud-sfsf-benefits-ext
SAP HANA Cloud Platform is a PaaS offering from SAP, targeted at developers. It provides out-of-the-box Java EE 6 web certified runtime, enabling running applications in the cloud. Free perpetual developer accounts are available at https://hana.ondemand.com
SAP HANA Cloud Platform: The void between your Datacenter and the CloudSAP HANA Cloud Platform
HPI FSOC Lab Cloud Symposium http://www.hpi.uni-potsdam.de/forschung/future_soc_lab/hpi_cloud_symposium.html took place in Sep 2013 in Hasso Platner Institut campus in Potsdam. This is an event which provided an insight into a number of critical research areas on the topic of Cloud Computing and Cloud operations. The HANA Cloud Platform talk emphasized on the importance of extending existing on-premise business systems with additional scenarios and expanding the access to the data stored in them. It showcased as well the Web Shop example open sourced at https://sap.github.io
This document discusses SAP HANA Cloud Platform and how developers can get started building applications for the cloud. It outlines the benefits of cloud computing and describes the core services of HANA Cloud Platform, including database access, identity management, and connectivity to on-premise systems. The document also addresses the "cloud connectivity dilemma" and how HANA Cloud Platform's connectivity service can help securely integrate cloud applications with existing on-premise systems and data. It provides resources for further information on tutorials, documentation, and SAP's partner program.
OSGi is steadily penetrating the Enterprise Java space, explaiting the complete lack of modularity in the Java EE specification. As this was introduced as a gap already at the time of Java EE 5 and still not addressed 6 years later - it's natural that alternative solutions will fill the gap.
At the same time - Java EE servers themselves decided to leverage OSGi to manage their own infrastructure. The session outlined the major Java EE Web Profile certified servers and validated the extent to which they expose OSGi to Java EE applications.
The document discusses Eclipse Memory Analyzer, which is a tool for analyzing heap dumps to detect memory leaks and issues. It begins with some assumptions about the audience's experience and an overview of memory analyzer basics. It then covers topics like how to get a heap dump, the difference between shallow and retained heap, dominator trees, Java reference types, GC roots, and what constitutes a memory leak. The presentation concludes with instructions on how to get involved with the Memory Analyzer community.
Java garbage collection has evolved significantly since its inception in 1959. The modern Hotspot JVM uses generational garbage collection with a young and old generation. It employs concurrent and parallel techniques like CMS to minimize pauses. OutOfMemoryErrors require increasing heap sizes or fixing leaks. Finalizers are generally avoided due to performance impacts. GC tuning must be tested under realistic loads rather than one-size-fits-all settings. Analysis tools help correlate GC logs with application behavior.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIVladimir Iglovikov, Ph.D.
Presented by Vladimir Iglovikov:
- https://www.linkedin.com/in/iglovikov/
- https://x.com/viglovikov
- https://www.instagram.com/ternaus/
This presentation delves into the journey of Albumentations.ai, a highly successful open-source library for data augmentation.
Created out of a necessity for superior performance in Kaggle competitions, Albumentations has grown to become a widely used tool among data scientists and machine learning practitioners.
This case study covers various aspects, including:
People: The contributors and community that have supported Albumentations.
Metrics: The success indicators such as downloads, daily active users, GitHub stars, and financial contributions.
Challenges: The hurdles in monetizing open-source projects and measuring user engagement.
Development Practices: Best practices for creating, maintaining, and scaling open-source libraries, including code hygiene, CI/CD, and fast iteration.
Community Building: Strategies for making adoption easy, iterating quickly, and fostering a vibrant, engaged community.
Marketing: Both online and offline marketing tactics, focusing on real, impactful interactions and collaborations.
Mental Health: Maintaining balance and not feeling pressured by user demands.
Key insights include the importance of automation, making the adoption process seamless, and leveraging offline interactions for marketing. The presentation also emphasizes the need for continuous small improvements and building a friendly, inclusive community that contributes to the project's growth.
Vladimir Iglovikov brings his extensive experience as a Kaggle Grandmaster, ex-Staff ML Engineer at Lyft, sharing valuable lessons and practical advice for anyone looking to enhance the adoption of their open-source projects.
Explore more about Albumentations and join the community at:
GitHub: https://github.com/albumentations-team/albumentations
Website: https://albumentations.ai/
LinkedIn: https://www.linkedin.com/company/100504475
Twitter: https://x.com/albumentations
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.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
Full-RAG: A modern architecture for hyper-personalizationZilliz
Mike Del Balso, CEO & Co-Founder at Tecton, presents "Full RAG," a novel approach to AI recommendation systems, aiming to push beyond the limitations of traditional models through a deep integration of contextual insights and real-time data, leveraging the Retrieval-Augmented Generation architecture. This talk will outline Full RAG's potential to significantly enhance personalization, address engineering challenges such as data management and model training, and introduce data enrichment with reranking as a key solution. Attendees will gain crucial insights into the importance of hyperpersonalization in AI, the capabilities of Full RAG for advanced personalization, and strategies for managing complex data integrations for deploying cutting-edge AI solutions.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
5. Good architecture and interchangeable
minilang party pos. product workeffort workflow …
accounting assetmaint content bi ebay ecommerce googlebase
guiapp hhfacility manufact. marketing minerva oagis order
Application layer
common catalina base datafile entity widget …
resolver rome serializer servlets tomcat xalan bsf
mail mx4j naming jetty poi wsdl4j bsh
jenks jpos18 jython looks lucene xerces velocity
jakarta jcl json jdbm jdom xmlapis ws-commons
log4j barcode4j axis batik commons xmlrpc geronimo
httpunit freemarker ezmorph fop derby xmlgraphics Libs..
Java VM
rt jce jsse plugin sunjce_prov. dnsns ..
6. Problem: CLASSPATH
Java VM party common resolver axis xerces
Begin rt
jce
assetmaint
hhfacility
catalina
base
mail
jenks
ezmorph
servlets
xmlapis
xmlrpc
Here jsse pos. datafile jakarta jetty xmlgraphics
plugin content entity log4j looks
sunjce_prov manufact. widget httpunit jdbm
.
dnsns product … mx4j bsf
.. bi rome batik bsh Class
marketing workflow jpos18 fop velocity
workeffort ecommerce jcl tomcat ws-commons
Not
ebay oagis barcode4j poi geronimo Found
minerva … freemarker lucene ..
Exception
minilang googlebase serializer jdom json
accounting order naming commons xalan
guiapp ofbiz jython derby wsdl4j
7. The OSGi Alliance
Started March 1999 as an initiative from ERICSSON, SUN and IBM
Today: A stable Alliance with almost 100 members
Now practically all of the Java Server vendors are represented there
A standardization body…
8. OSGi Framework Layers
Staircase
Applications can make use
of different layers directly
Module Layer defines
packaging , deployment
dependancies among
modules
Lifecycle Layer controls
lifecycyle operations of a
bundle
9. Module Layer: Bundles
Bundles
Are JAR files
Contain classes, other resources like HTML, images, specific metadata
Contain
manifest file (META-INF/MANIFEST.MF) with OSGI specific
headers used to manage the bundle
Describes the content of the JAR file
Export Import package
Require-Bundle
12. Class Loading Architecture: Delegation
Basic properties
Parent delegation
Wire importers and exporters
There can be fragment bundles
Class loading traversal based on importers and their wires
13. Lifecycle Layer
Runtime representation of bundles
Forevery bundle, the framework creates a Bundle java object
Bundles are identified by Bundle ID, Bundle Symbolic Name and
Bundle Location
Bundle has a runtime state:
14. What is the story?
Web Web Module bundle
Web Module
Web Modules Modules (war)
(war) bundle
Web Modules bundle
Web Modules
State 2
bundle
Lib Lib Lib Lib EAR file
EAR file OSGi framework
Java EE compliant runtime
bundle bundle bundle
bundle bundle bundle
bundle bundle bundle
bundle bundle bundle
bundle bundle bundle
OSGi framework
15. What do we aim to get from OSGi?
■ Standardized execution environment
■ Java-based modularization
■ Well defined module contract
■ Strict dependency management at build and run time
■ Manifest as a single point of truth
■ Deterministic declarative runtime resolution
or in other words…
■ Evolve from JARs/modules to “interchangeable/reusable parts”
21. Step 2: How to create bundles?
Apache Derby – what Eclipse uses out of it :-)
org.apache.derby.*
authentication
database
io
jdbc
vti How to create manifests?
By hand
BND tool
Apache Felix Maven plugin
Eclipse PDE
Bundlor
or in other words…
■ Don’t rush to define manifests, for modules you know nothing of!
22. Step 3: Let‘s try to activate the bundle.
java.lang.NoClassDefFoundException Class definition is
missing!
The forName() method in class Class.
Possible causes? The findSystemClass method() in class ClassLoader.
The loadClass() method in class ClassLoader
Missing import-package
Missing export-package
Import version mismatch [1.2.3, 2.0); “1.2.3”
Forgotten/missing component (really missing!)
Wrong boot class delegation property
Missing file system permissions (can’t read the JARs)
23. Step 3: Separate a the first library as a bundle
java.lang.NoClassDefFoundError Class definition is
found, but
instantiation failed!
Possible causes?
Exception in static block
Missing imported class (NoClassDefFoundException for it)
Class version mismatch
Hotspot reflection JIT optimizations (BugID 6265952 )
(injection of sun.misc.Unsafe.defineClass)
or in other words…
■Don’t rush blaming the framework! Classloading there is quite solid!
24. Step 4: Iterative refactoring
My bundle is not updated?!
Possible causes?
Didyou update the version?
You’re replacing your bundle directly in the equinox plugins folder
Package-imports do not fit to the new bundle version?
or in other words…
■Don’t rush blaming the framework! ;)
25. Step 4: Iterative refactoring
java.lang.ClassCastError
Possible causes?
Additionalcopies (besides the system bundle) of the
OSGi framework classes
Undesired additional JARs in classpath
■ Clash between RT.jar and application libs
(previously used embedded jars)
■ Java SE 5 vs. Java SE 6 does make a difference…
(a bunch of new packages added (StAX, JDBC 4.0, JAXB 2.0, etc.)
or in other words…
■Make sure you understand the root cause. (try using Eclipse Memory Analyzer)
26. Step 4: Iterative refactoring
Works in Eclipse, but doesn‘t work in Equinox
Possible issues
■ Different setting of org.osgi.parentClassloader
■ app (default for Eclipse)
■ boot
■ ext
■ fwk
Certain expectations of org.osgi.framework.system.packages
Different values of org.osgi.framework.bootdelegation
■ property osgi.compatibility.bootdelegation (default for Eclipse is false)
or in other words…
■Don’t be fooled by configuration differences
27. Step 4: Design flaws
Dependencies on startup order
Possible causes?
■ Avoid lookup-error-fail patterns
■ As a last resort – you can use start levels
■ Keep Activators really lean.
■ Typically seen when extracting code from a web module with fixed
Servlet.init() order.
or in other words…
■Don’t do anything needless in your activator. That’s not init()/start()!
28. Step 4: Design flaws
Classloader resource assumptions
Possible issues
■ JAR files
■ Folder containing class files/packages
■ URLs (to any of the above)
■ new File(<resource>), after loader resources iteration
“bundle:xxx” as a resource
or in other words…
■Don’t make assumptions on the classloader resources!
29. Step 4: Design flaws
Boot delegation specifics
■ org.osgi.framework.bootdelegation – shortcut the OSGi resolution
■ Adding com.foo.* includes all sub-packages, but not the com.foo
package itself.
■ osgi.compatibility.bootdelegation - true/false
or in other words…
■Make sure that you understand the setup of your OSGi environment
30. Step 5: Design flaws
SPI pattern limitations
Possible issues
■ Load a class, described in some meta-data file, used via interface
■ META-INF/services/javax.xml.ws.spi.Provider
■ Explicit import of the impl packages is required!
31. Step 5: Design flaws
My process exits unexpectedly?!
Possible issues
■ Lots of code is written with the assumption that it owns the world and not
that it lives in a small corner of it.
■ Enabling a Security Manager which traces System.exit() and Runtime.halt()
calls might help
32. Step 5: Design flaws
Registering objects in the VM has direct impact on the
ability to stop a bundle
Some of those
have no
Possible issues unregister methods!
■ System in and out streams
■ Shutdown hooks
■ MBean server factory
■ Log4J formatters
■ JNDI provider/factory
or in other words…
■Don’t try to do the job of the underlying middleware.
33. Step 5: Design flaws
ContextClassLoader usage
Possible issues
■ Some code written to run in a web app might make some assumptions on
the Context classloader.
■ One example here is JNDI.
or in other words…
■Consider environment dependencies when extracting code into bundles
37. Other relevant sessions
Tue 12:00 PM Developing OSGi-Enabled Java EE Applications
Tue 6:00 PM Patterns for modularity
Tue 6:00 PM OSGI BOF
Tue 9:00 PM OSGi at a Large-Scale Enterprise: Lessons from eBay
Wed 10:00 AM Java EE OSGi applications : Design and Deployment for On-Premises and Cloud
Wed 1:00 PM OSGi and JSR 294: Module Keyword
Wed 4:45 PM Visualizing the Science of Conversation with JavaFX and OSGi to Save Lives
Thu 3:30 PM Creating Modular Applications with Apache Aries and OSGi
Thu 3:30 PM Developing Rich Modular Clients with Java, JavaFX and OSGi Technology