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
The document discusses modularization in Java 8 and OSGi. It describes what modules are and why they are needed, including for managing dependencies and versioning. It outlines the characteristics of a good module system and compares how Java 8's Project Jigsaw and OSGi handle modularization. Key points include how both aim to address issues like class loading performance and dependency management, but OSGi has existing tools and does not require language changes.
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.
Architecture | Modular Enterprise Applications | Mark NuttallJAX London
This document discusses modularity and OSGi, including:
- What modularity is and why Java needs it to reduce entanglement over time
- An overview of Enterprise OSGi and how it brings enterprise technologies to OSGi
- New features in OSGi Service Platform Release 4 such as a standard application model and bundle repository
- A demonstration of a colors application that uses OSGi bundles and services
Towards a modularity maturity model - osgi users forum uk 16-nov2011mfrancis
Presentation by Graham Charters at OSGi Users' Forum UK meeting on Nov 16, 2011 in London.
Abstract: For those in the thick of OSGi, it is easy to forget what it was like to get started, and what benefits are achieved at each stage. Drawing inspiration from the various SOA maturity models, I thought it would be an interesting exercise to try to put together a modularity equivalent, and so the Modularity Maturity Model (M3) was born. The title says "Towards" because this is an initial proposal and so input from the audience (rocks, rotten vegetables, and maybe even faint praise) would be welcome.
Bytecode Weaving in OSGi – Enhance Your Classes, Not Your Dependency graph! ...mfrancis
For a long time bytecode weaving in OSGi has been a cumbersome process. Using it's internal hooks Equinox has supported basic transformation since version 3.2, but there has still been no simple, standard way to enhance classes and add new dependencies to the bundle that contains them. The new OSGi WeavingHook whiteboard pattern, which allows any OSGi bundle, not just an Equinox framework extension, to weave classes from, and add dependencies to, other OSGi bundles. Also new in OSGi is the opportunity to scan the classpath of an OSGi bundle. Whilst the isolated, modular classpath of an OSGi bundle provides an excellent system for building Java applications, many extenders and libraries need to be able to search for classes or resources within the bundle. This function further aids weaving implementations by allowing them to search for resources, class and package name patterns, and other configuration without requiring specific metadata to be present. As the lead author for the Bytecode weaving design within the OSGi Alliance, and a committer in the Apache Aries project, Tim will use his expertise to demonstrate the power and flexibility of WeavingHooks, particularly in conjunction with the latest OSGi updates for classpath scanning. Drawing on real-world examples from the Apache Aries project Tim will use real-world examples to prove that first-class weaving support is now available in OSGi.
Java 9 introduced the Java Platform Module System (JPMS) as a way to modularize the Java platform and it can be also be used by developers to modularize their own applications, although JPMS lack a number of important features for software running on the Java platform.
As people look to support the latest versions of the Java platform, changes introduced in Java 9 related to JPMS led to the needs for some features in the OSGi Core specification. OSGi framework implementations like Eclipse Equinox and Apache Felix and tools like Bnd were updated to support these new features.
Brief description about Java modularity including OSGi and Jigsaw.
Nowadays the word "modularity" has been searched a lot in Google and several blog posts have been written about it. Specially with the #Jigsaw subject that Oracle's guys have been spreading in different conferences .
Here I try to summarise the idea in the Java environment mentioning what for me are the main implementations of java modularity : OSGi and Jigsaw.
The document discusses modularization in Java 8 and OSGi. It describes what modules are and why they are needed, including for managing dependencies and versioning. It outlines the characteristics of a good module system and compares how Java 8's Project Jigsaw and OSGi handle modularization. Key points include how both aim to address issues like class loading performance and dependency management, but OSGi has existing tools and does not require language changes.
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.
Architecture | Modular Enterprise Applications | Mark NuttallJAX London
This document discusses modularity and OSGi, including:
- What modularity is and why Java needs it to reduce entanglement over time
- An overview of Enterprise OSGi and how it brings enterprise technologies to OSGi
- New features in OSGi Service Platform Release 4 such as a standard application model and bundle repository
- A demonstration of a colors application that uses OSGi bundles and services
Towards a modularity maturity model - osgi users forum uk 16-nov2011mfrancis
Presentation by Graham Charters at OSGi Users' Forum UK meeting on Nov 16, 2011 in London.
Abstract: For those in the thick of OSGi, it is easy to forget what it was like to get started, and what benefits are achieved at each stage. Drawing inspiration from the various SOA maturity models, I thought it would be an interesting exercise to try to put together a modularity equivalent, and so the Modularity Maturity Model (M3) was born. The title says "Towards" because this is an initial proposal and so input from the audience (rocks, rotten vegetables, and maybe even faint praise) would be welcome.
Bytecode Weaving in OSGi – Enhance Your Classes, Not Your Dependency graph! ...mfrancis
For a long time bytecode weaving in OSGi has been a cumbersome process. Using it's internal hooks Equinox has supported basic transformation since version 3.2, but there has still been no simple, standard way to enhance classes and add new dependencies to the bundle that contains them. The new OSGi WeavingHook whiteboard pattern, which allows any OSGi bundle, not just an Equinox framework extension, to weave classes from, and add dependencies to, other OSGi bundles. Also new in OSGi is the opportunity to scan the classpath of an OSGi bundle. Whilst the isolated, modular classpath of an OSGi bundle provides an excellent system for building Java applications, many extenders and libraries need to be able to search for classes or resources within the bundle. This function further aids weaving implementations by allowing them to search for resources, class and package name patterns, and other configuration without requiring specific metadata to be present. As the lead author for the Bytecode weaving design within the OSGi Alliance, and a committer in the Apache Aries project, Tim will use his expertise to demonstrate the power and flexibility of WeavingHooks, particularly in conjunction with the latest OSGi updates for classpath scanning. Drawing on real-world examples from the Apache Aries project Tim will use real-world examples to prove that first-class weaving support is now available in OSGi.
Java 9 introduced the Java Platform Module System (JPMS) as a way to modularize the Java platform and it can be also be used by developers to modularize their own applications, although JPMS lack a number of important features for software running on the Java platform.
As people look to support the latest versions of the Java platform, changes introduced in Java 9 related to JPMS led to the needs for some features in the OSGi Core specification. OSGi framework implementations like Eclipse Equinox and Apache Felix and tools like Bnd were updated to support these new features.
Brief description about Java modularity including OSGi and Jigsaw.
Nowadays the word "modularity" has been searched a lot in Google and several blog posts have been written about it. Specially with the #Jigsaw subject that Oracle's guys have been spreading in different conferences .
Here I try to summarise the idea in the Java environment mentioning what for me are the main implementations of java modularity : OSGi and Jigsaw.
A slide deck presenting the highlights of the NetBeans IDE 7 release, including each of its minor releases, 7.1, 7.1.1, 7.2, 7.2.1, 7.3, 7.3.1, and 7.4, in the context of the IDE's complete feature set.
OSGi-friendly bytecode weaving – enhance your classes, not your dependency gr...mfrancis
Presentation by Tim Ward (IBM) at OSGi DevCon/EclipseCon 2011.
For many years bytecode weaving in OSGi has been a cumbersome process. Using it's internal hooks Equinox has supported basic transformation since version 3.2, but there has still been no simple, standard way to enhance classes or add new dependencies to the bundle that contains them. The Equinox 3.7 release includes support for the new OSGi WeavingHook whiteboard pattern, which allows any OSGi bundle, not just an Equinox framework extension, to weave classes from, and add dependencies to, other OSGi bundles.
Also new in OSGi is the opportunity to scan the classpath of an OSGi bundle. Whilst the isolated, modular classpath of an OSGi bundle provides an excellent system for building Java applications, many extenders and libraries need to be able to search for classes or resources within the bundle. This function further aids weaving implementations by allowing them to search for resources, class and package name patterns, and other configuration without requiring specific metadata to be present.
As the lead author for the Bytecode Weaving design within the OSGi Alliance, and a committer in the Apache Aries project, Tim will use his expertise to demonstrate the power and flexibility of WeavingHooks, particularly in conjunction with the latest OSGi updates for classpath scanning. Drawing on real-world examples from the Apache Aries project Tim will use real-world examples and Equinox 3.7 to prove that first-class weaving support is now available in OSGi
Julien Dubois discusses the benefits of developing modular Java applications. Modularity improves quality, lowers complexity, and makes applications easier to reuse and maintain. Spring provides tools for creating layered applications with clear separation of concerns between presentation, service, and repository layers using annotations like @Controller, @Service, and @Repository. For true modularity with hot-deployable modules, OSGi is introduced, which Spring Dynamic Modules builds upon. dm Server leverages Spring, Tomcat, and OSGi to allow deployment of modular applications to virtualized and cloud environments at runtime for improved scalability and reduced costs.
The document is a slide presentation on JavaScript and ECMAScript. It discusses the history and development of JavaScript, noting that it was originally created in 10 days by Brendan Eich in 1995 for Netscape Navigator to enable dynamic web pages. It was later submitted to Ecma International and became the ECMAScript standard. The presentation covers core JavaScript concepts like data types, operators, variables, and functions.
The document provides an introduction to JBoss Seam by discussing the history of Java web applications and where Seam fits within that evolution. It notes that early Java web apps used JSP/Servlet models, which were improved by MVC frameworks like Struts, but these frameworks required many configuration files and the front-end and back-end were unaware of each other. Meanwhile, other languages like PHP and Ruby on Rails made deployment and testing easier through conventions over configuration and features like scaffolding. JBoss Seam aims to address these issues and provide a richer experience for modern web applications.
The document discusses new features in Oracle8i for administrators, including Java in the database, optimizer and query improvements, summary management, indexes and partitioning, universal installer migration and upgrade features, manageability features, availability and recoverability, Net8 features, SQL*Plus and national language support, database security, and partial additions. Key points covered include Java virtual machine integration, SQLJ and JDBC, using Java with Oracle, Java configuration, Internet file system, and stored outlines for optimizer plan stability.
Java & J2EE Struts with Hibernate FrameworkMohit Belwal
This document provides an overview of Java 2 Enterprise Edition (J2EE) and its core components. J2EE is a multi-tiered architecture for developing enterprise applications and web applications using Java technology. It uses a component-based model where components like servlets, JavaServer Pages (JSPs), and Enterprise JavaBeans (EJBs) interact with services provided by containers like web containers and EJB containers. The document discusses J2EE concepts, features, benefits, components, containers, and how applications are packaged and deployed. It also provides examples of servlets and JSPs as core web components in J2EE.
The document provides an update on Alfresco's WCM roadmap. It discusses the release of a WCM Quick Start tool in September 2010 and details two upcoming projects: Project Cheetah focused on enhancing the Web Editor and slated for Q4 2010, and Project Swift focused on content authoring and publishing tools and slated for Q2 2011. It also outlines various new and enhanced features for composite content modeling, dependent associations, and the Web Producer interface.
This document discusses the history and evolution of OpenEJB and EJB specifications. It provides a timeline of OpenEJB from 1999 to present and notes David Blevins' involvement in the EJB 2.1, 3.0, 3.1, and 3.2 specifications. It also summarizes the components, lifecycle, views, services, environment, and packaging aspects of EJB from versions 1.1 through 3.1. Finally, it outlines some ideas for the next generation of EJB, including changes to components, services, interceptors, exceptions, and other areas.
The document discusses Java development environments for Domino, including embedded applets, JavaScript, the Domino toolkit for Java/CORBA, and Harmony for Domino EJB. It also covers what to expect in Domino 6, including better integration with J2EE and Websphere. Examples provided include help desk, web services, and spam filter applications. Sites for additional information are listed at the end.
This document contains an agenda for an interview preparation session focusing on .NET and C# ASP.NET. The agenda includes introductions, discussing domains and projects, an overview of the Software Development Life Cycle (SDLC) including Scrum and planning poker, version management using Git, problem solving techniques, an overview of common .NET programs and technologies like the .NET Framework and C#, and concluding with manager and HR rounds.
The document provides an overview of the Java Enterprise Edition (JEE) architecture and technologies. It describes JEE as a set of standards for developing scalable, secure, and transactional Java applications. The key components of JEE include web containers, enterprise beans, JavaServer Pages, servlets, and other technologies that allow separation of concerns and portability across application servers.
This document provides an overview of new features and changes in Java 7, including improved support for dynamic languages through the invokedynamic instruction, string switching, try-with-resources, and minor language and API improvements. It also outlines two potential plans for future Java releases, with Plan A representing Java 7 as currently planned and Plan B splitting features between Java 7 and 8 to accelerate delivery.
In this core java training session, you will learn get introduction to Java. Topics covered in this session are:
• History of Java – A Programmer’s Perspective
• Salient Features of Java
• Major Java Editions
For more information about this course visit on this link: https://www.mindsmapped.com/courses/software-development/learn-java-fundamentals-hands-on-training-on-core-java-concepts/
This document provides an overview of connecting to and working with DB2 for IBM i from PHP applications. It discusses using Zend Server, which includes the ibm_db2 driver for connecting to DB2. The document reviews parameters for db2_connect() such as database name, username, password and optional options. It also covers topics like setting a default library, using library lists, and strategies for user profiles. An included sample script demonstrates prepared statements, binding parameters, and retrieving result sets from DB2 using ibm_db2.
This document provides an introduction and tutorial on Java Server Pages (JSP) technology. It explains that JSP files allow for server-side dynamic web development using Java code embedded in HTML pages. It covers JSP concepts, compares JSP to ASP and servlets, describes the JSP architecture and processing, and provides instructions for setting up a JSP development environment.
Strategic Modernization with PHP on IBM iAlan Seiden
You know you need to modernize your IBM i applications, but where to start? In this talk, Alan will inspire you with creative examples of modernization on IBM i that provided a strong return on investment while controlling risk. Learn how to choose projects with the best return on investment, and then complete them with confidence. We will lead an honest discussion of the most effective strategies. Can RPG programmers learn PHP? Yes. Can new PHP developers be integrated into an existing IT department? Yes. Both approaches have merit. See creative ways to use PHP, not only to create new GUI front-ends, but to enhance existing interactive RPG programs. Please your users and business people by incorporating PHP into your shop.
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentPaul Withers
The document discusses the OpenNTF Domino API (ODA), which is an OSGi plugin that extends the core Domino Java API. It provides features like reducing unnecessary coding, modernizing constructs, improving readability, adding new features, and enabling flexible session management beyond XPages. The document outlines some of the key features of ODA, how to enable it for XPages and Java applications, and how it improves upon and extends the standard Domino Java API in areas like sessions, documents, views, transactions, and more. It also discusses related OpenNTF projects like XOTS, database listeners, and ExtMgr that integrate with ODA.
This document provides an overview of eBay's use of OSGi for its enterprise architecture. Some key points:
- eBay has a large codebase of over 44 million lines of code that was becoming difficult to manage due to its monolithic nature and tight coupling.
- eBay adopted OSGi to introduce modularity and loose coupling into its architecture in order to tame complexity, increase agility, and allow different components to evolve independently.
- OSGi was chosen because its features like bundles, imports/exports, and versioning help achieve eBay's goals of modularity, hiding implementation details, and accurate dependency management.
A slide deck presenting the highlights of the NetBeans IDE 7 release, including each of its minor releases, 7.1, 7.1.1, 7.2, 7.2.1, 7.3, 7.3.1, and 7.4, in the context of the IDE's complete feature set.
OSGi-friendly bytecode weaving – enhance your classes, not your dependency gr...mfrancis
Presentation by Tim Ward (IBM) at OSGi DevCon/EclipseCon 2011.
For many years bytecode weaving in OSGi has been a cumbersome process. Using it's internal hooks Equinox has supported basic transformation since version 3.2, but there has still been no simple, standard way to enhance classes or add new dependencies to the bundle that contains them. The Equinox 3.7 release includes support for the new OSGi WeavingHook whiteboard pattern, which allows any OSGi bundle, not just an Equinox framework extension, to weave classes from, and add dependencies to, other OSGi bundles.
Also new in OSGi is the opportunity to scan the classpath of an OSGi bundle. Whilst the isolated, modular classpath of an OSGi bundle provides an excellent system for building Java applications, many extenders and libraries need to be able to search for classes or resources within the bundle. This function further aids weaving implementations by allowing them to search for resources, class and package name patterns, and other configuration without requiring specific metadata to be present.
As the lead author for the Bytecode Weaving design within the OSGi Alliance, and a committer in the Apache Aries project, Tim will use his expertise to demonstrate the power and flexibility of WeavingHooks, particularly in conjunction with the latest OSGi updates for classpath scanning. Drawing on real-world examples from the Apache Aries project Tim will use real-world examples and Equinox 3.7 to prove that first-class weaving support is now available in OSGi
Julien Dubois discusses the benefits of developing modular Java applications. Modularity improves quality, lowers complexity, and makes applications easier to reuse and maintain. Spring provides tools for creating layered applications with clear separation of concerns between presentation, service, and repository layers using annotations like @Controller, @Service, and @Repository. For true modularity with hot-deployable modules, OSGi is introduced, which Spring Dynamic Modules builds upon. dm Server leverages Spring, Tomcat, and OSGi to allow deployment of modular applications to virtualized and cloud environments at runtime for improved scalability and reduced costs.
The document is a slide presentation on JavaScript and ECMAScript. It discusses the history and development of JavaScript, noting that it was originally created in 10 days by Brendan Eich in 1995 for Netscape Navigator to enable dynamic web pages. It was later submitted to Ecma International and became the ECMAScript standard. The presentation covers core JavaScript concepts like data types, operators, variables, and functions.
The document provides an introduction to JBoss Seam by discussing the history of Java web applications and where Seam fits within that evolution. It notes that early Java web apps used JSP/Servlet models, which were improved by MVC frameworks like Struts, but these frameworks required many configuration files and the front-end and back-end were unaware of each other. Meanwhile, other languages like PHP and Ruby on Rails made deployment and testing easier through conventions over configuration and features like scaffolding. JBoss Seam aims to address these issues and provide a richer experience for modern web applications.
The document discusses new features in Oracle8i for administrators, including Java in the database, optimizer and query improvements, summary management, indexes and partitioning, universal installer migration and upgrade features, manageability features, availability and recoverability, Net8 features, SQL*Plus and national language support, database security, and partial additions. Key points covered include Java virtual machine integration, SQLJ and JDBC, using Java with Oracle, Java configuration, Internet file system, and stored outlines for optimizer plan stability.
Java & J2EE Struts with Hibernate FrameworkMohit Belwal
This document provides an overview of Java 2 Enterprise Edition (J2EE) and its core components. J2EE is a multi-tiered architecture for developing enterprise applications and web applications using Java technology. It uses a component-based model where components like servlets, JavaServer Pages (JSPs), and Enterprise JavaBeans (EJBs) interact with services provided by containers like web containers and EJB containers. The document discusses J2EE concepts, features, benefits, components, containers, and how applications are packaged and deployed. It also provides examples of servlets and JSPs as core web components in J2EE.
The document provides an update on Alfresco's WCM roadmap. It discusses the release of a WCM Quick Start tool in September 2010 and details two upcoming projects: Project Cheetah focused on enhancing the Web Editor and slated for Q4 2010, and Project Swift focused on content authoring and publishing tools and slated for Q2 2011. It also outlines various new and enhanced features for composite content modeling, dependent associations, and the Web Producer interface.
This document discusses the history and evolution of OpenEJB and EJB specifications. It provides a timeline of OpenEJB from 1999 to present and notes David Blevins' involvement in the EJB 2.1, 3.0, 3.1, and 3.2 specifications. It also summarizes the components, lifecycle, views, services, environment, and packaging aspects of EJB from versions 1.1 through 3.1. Finally, it outlines some ideas for the next generation of EJB, including changes to components, services, interceptors, exceptions, and other areas.
The document discusses Java development environments for Domino, including embedded applets, JavaScript, the Domino toolkit for Java/CORBA, and Harmony for Domino EJB. It also covers what to expect in Domino 6, including better integration with J2EE and Websphere. Examples provided include help desk, web services, and spam filter applications. Sites for additional information are listed at the end.
This document contains an agenda for an interview preparation session focusing on .NET and C# ASP.NET. The agenda includes introductions, discussing domains and projects, an overview of the Software Development Life Cycle (SDLC) including Scrum and planning poker, version management using Git, problem solving techniques, an overview of common .NET programs and technologies like the .NET Framework and C#, and concluding with manager and HR rounds.
The document provides an overview of the Java Enterprise Edition (JEE) architecture and technologies. It describes JEE as a set of standards for developing scalable, secure, and transactional Java applications. The key components of JEE include web containers, enterprise beans, JavaServer Pages, servlets, and other technologies that allow separation of concerns and portability across application servers.
This document provides an overview of new features and changes in Java 7, including improved support for dynamic languages through the invokedynamic instruction, string switching, try-with-resources, and minor language and API improvements. It also outlines two potential plans for future Java releases, with Plan A representing Java 7 as currently planned and Plan B splitting features between Java 7 and 8 to accelerate delivery.
In this core java training session, you will learn get introduction to Java. Topics covered in this session are:
• History of Java – A Programmer’s Perspective
• Salient Features of Java
• Major Java Editions
For more information about this course visit on this link: https://www.mindsmapped.com/courses/software-development/learn-java-fundamentals-hands-on-training-on-core-java-concepts/
This document provides an overview of connecting to and working with DB2 for IBM i from PHP applications. It discusses using Zend Server, which includes the ibm_db2 driver for connecting to DB2. The document reviews parameters for db2_connect() such as database name, username, password and optional options. It also covers topics like setting a default library, using library lists, and strategies for user profiles. An included sample script demonstrates prepared statements, binding parameters, and retrieving result sets from DB2 using ibm_db2.
This document provides an introduction and tutorial on Java Server Pages (JSP) technology. It explains that JSP files allow for server-side dynamic web development using Java code embedded in HTML pages. It covers JSP concepts, compares JSP to ASP and servlets, describes the JSP architecture and processing, and provides instructions for setting up a JSP development environment.
Strategic Modernization with PHP on IBM iAlan Seiden
You know you need to modernize your IBM i applications, but where to start? In this talk, Alan will inspire you with creative examples of modernization on IBM i that provided a strong return on investment while controlling risk. Learn how to choose projects with the best return on investment, and then complete them with confidence. We will lead an honest discussion of the most effective strategies. Can RPG programmers learn PHP? Yes. Can new PHP developers be integrated into an existing IT department? Yes. Both approaches have merit. See creative ways to use PHP, not only to create new GUI front-ends, but to enhance existing interactive RPG programs. Please your users and business people by incorporating PHP into your shop.
OpenNTF Domino API (ODA): Super-Charging Domino DevelopmentPaul Withers
The document discusses the OpenNTF Domino API (ODA), which is an OSGi plugin that extends the core Domino Java API. It provides features like reducing unnecessary coding, modernizing constructs, improving readability, adding new features, and enabling flexible session management beyond XPages. The document outlines some of the key features of ODA, how to enable it for XPages and Java applications, and how it improves upon and extends the standard Domino Java API in areas like sessions, documents, views, transactions, and more. It also discusses related OpenNTF projects like XOTS, database listeners, and ExtMgr that integrate with ODA.
This document provides an overview of eBay's use of OSGi for its enterprise architecture. Some key points:
- eBay has a large codebase of over 44 million lines of code that was becoming difficult to manage due to its monolithic nature and tight coupling.
- eBay adopted OSGi to introduce modularity and loose coupling into its architecture in order to tame complexity, increase agility, and allow different components to evolve independently.
- OSGi was chosen because its features like bundles, imports/exports, and versioning help achieve eBay's goals of modularity, hiding implementation details, and accurate dependency management.
Best Practices for Enterprise OSGi Applications - Emily Jiangmfrancis
This document discusses best practices for OSGi application development. It begins by explaining the problems with traditional Java applications that have global classpaths and monolithic dependencies. It then provides an overview of what OSGi is and how it addresses these problems through modular bundles that have explicit dependencies and versioning.
The document outlines seven best practices for OSGi applications: 1) Use Import-Package instead of Require-Bundle to reduce coupling between bundles. 2) Avoid split packages to maintain high bundle cohesion. 3) Version bundles and packages to allow flexibility in dependencies. 4) Separate APIs from implementations for loose coupling. 5) Share services rather than implementations through the service registry. 6) Make bundles loosely coupled and highly cohesive.
Enterprise Java Beans (EJB) is a platform for building portable, reusable, and scalable business applications using the Java programming language.
EJB allows application developers to focus on building business logic without having to spend time on building infrastructure code for services such as transactions, security, automated persistence, and so on.
This presentation introduces EJB 3.0 concepts with code examples.
My keynote at Eclipsecon Europe 2013.
One of the attractive qualities of OSGi is its role in enabling technologies that adopt it to manage the cost of their own success. Anything that gains adoption - in technology or elsewhere - picks up baggage as a result and needs to figure out how to deal with current installations while expanding in new directions. The WebSphere platform has been around for almost as long as Java and knows a thing or two about baggage but still manages to travel to many places with just a carry-on allowance. We adopted OSGi internally 8 years ago and have gradually increased our exploitation with each passing release, most recently and deeply with the lightweight WAS Liberty Profile. It hasn't all been plain sailing and we learned from a number of mistakes made along the way. When WebSphere Application Server first adopted OSGi it had over 10 million lines of code in a modest number of huge JARs. The engineering effort to modularize that into a “sensible” number of OSGi bundles was fairly significant. We had a global development team spread across a dozen labs and nearly as many timezones, all learning OSGi principles at the same time. What could possibly go wrong? We did not, for example, initially adopt the services part of the OSGi architecture but it’s how we can now start/stop individual technologies of the Java EE Web Profile on the WAS Liberty profile, in a 50MB install with a 2-second startup, while still supporting a massive deploy base of applications on older levels of Java EE.
One of the challenges OSGi continues to face is over when to be “front of office” and when to be “back”. As the industry accelerates towards cloud, OSGi is an internal part of IBM’s strategy for high-density virtualized Platform-as-a-Service through WebSphere Liberty. Today’s cloud provisioning strategies, for example the buildpacks used by Heroku and CloudFoundry, are designed to be technology-agnostic. As a programming model for the cloud, OSGi is in a position of strength with its heavily service-oriented architecture. But in the spirit of agnosticism, one of the next steps OSGi needs to take is simply greater availability of the core OSGi framework in some of the more popular cloud platforms. Once there are more OSGi services running in those environments then the value and simplicity of autowiring OSGi services as cloud services becomes more apparent. Expectations and vision has to be managed up and down any organization that invests in OSGi - from the executive leadership team responsible for the business's bottom line, through the distributed architecture/development teams building tomorrow's technology on top of today’s, to the marketing and sales organization who need to sell the result to both IT and line of business. The value proposition has to be tailored to the audience.
This is the story of how WebSphere has had outstanding success with the former four-letter acronym that IBM Marketing still wants to expand.
Travelling Light for the Long Haul - Ian Robinsonmfrancis
Ian Robinson is an IBM Distinguished Engineer and WebSphere Foundation Chief Architect who has over 20 years of experience in transaction processing and distributed enterprise computing. The document discusses how WebSphere Application Server moved to an OSGi modular architecture to allow for higher density deployments, continuous delivery of new features without breaking compatibility, and reduced hardware costs through more efficient use of resources. It describes the stages of adopting OSGi, from initial modularization to dynamic runtime deployment and management of features. The challenges of OSGi adoption for both internal components and external applications are also examined.
NA Developer Day - Taking your COBOL apps to Net & JVM Micro Focus
The document discusses moving COBOL applications to managed code environments like .NET and JVM. It describes what managed code is and its benefits, such as portable intermediate languages, garbage collection, and extensive frameworks. It provides examples of using managed code features like object-oriented programming, exception handling, and accessing databases from COBOL. The document also presents a roadmap for COBOL on JVM and discusses considerations for modernizing applications on managed code platforms.
OSGi is a modular system for Java that addresses issues with complex, monolithic systems by breaking them into interacting modules. Carbon is a middleware platform built using OSGi that consists of modular components providing core services. Each component is an OSGi bundle that can be independently installed, updated, and uninstalled. This allows Carbon to be extended through additional bundles and provides a dynamic and maintainable architecture for middleware.
In this session you will learn:
Understand Spring framework overview & its salient features
Spring concepts (IoC container / DI)
Spring-AOP basics
Spring ORM / Spring DAO overview
Spring Web / MVC overview
For more information, visit: https://www.mindsmapped.com/courses/software-development/java-developer-training-for-beginners/
This document provides an overview of composite SOA frameworks, including Enterprise Service Bus (ESB) structures and technologies. It discusses service mapping and routing using UDDI, and component containers like SCA, JBI, and OSGi. Key capabilities of ESBs are described such as routing, transformation, orchestration. Implementation technologies include ActiveMQ, JBossMQ, Oracle AQ, and MQ Series. The roles of UDDI, JBI specifications, OSGi, and SCA are summarized. The document concludes with a list of projects and technologies that support JBI, SCA, and OSGi.
Enterprise Spring Building Scalable ApplicationsGordon Dickens
Spring is an open source framework for enterprise Java applications. It provides features like inversion of control, dependency injection, and aspect-oriented programming. Spring supports developing modular applications using OSGi and includes additional modules for web applications, integration, security, and batch processing. It aims to make enterprise Java development easier by reducing boilerplate code and providing a lightweight container for managing beans.
COBOL deployment to .Net or JVM - Developer DayMicro Focus
This document discusses options for deploying COBOL applications to managed code environments like .NET and JVM. It covers benefits like improved performance, reuse of existing frameworks, and easier debugging across languages. New features in Visual COBOL 2.2 like support for additional app servers and databases are also highlighted. The presentation demonstrates file handling, exception handling, and database access in managed code. It recommends a gradual modernization approach while being aware of potential skill gaps and unsupported features.
This document discusses options for deploying COBOL applications to .NET or JVM managed code environments. It covers what managed code is, benefits like reusable frameworks and improved debugging. Details are provided on moving COBOL code to managed code while addressing considerations for file handling, databases, and other features. A demonstration shows capabilities for managed code like exception handling and date arithmetic libraries.
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil BartlettJAX London
The talk will cover a bit of background first to set things up: what is a module, why do we need a module system, summary of Java's existing support for modularity. Then it will move on to give a comparison of OSGi's and Jigsaw's dependency models. Pros and cons of each model in different environments will be discussed. Finally, opportunities and challenges for interoperability: from the perspective of both application developers (who may need to integrate modules from both kinds) and from library module developers (who may need to target both module systems)
Java EE 7 provides several new features to improve developer productivity and meet enterprise demands. These include WebSocket, JSON processing, simplified JMS, and more annotated POJOs. Popular Java EE 7 application servers that implement these specifications include GlassFish, WildFly, and JEUS. Various IDEs like NetBeans, Eclipse, and IntelliJ provide support for developing Java EE 7 applications.
Building a Modular Server Platform with OSGi - Harshana Eranga Martin, Dileep...mfrancis
OSGi is a modular system for Java that defines modules called bundles. Carbon is an open-source middleware platform based on OSGi that breaks complex systems into interacting bundles. Each SOA component in Carbon is represented by an OSGi bundle to provide modularity, dynamic loading, and loose coupling. Carbon uses OSGi services and features to compose middleware functionality from components and manage their lifecycles. This allows Carbon to be a flexible and extensible platform for building and running modular SOA applications.
OSGi enRoute is an OSGi project to make OSGi as easy to use as some of non-java dynamic web development environments but still provide the benefits of OSGi's strong modularity. OSGi makes it easy to get started with OSGi by providing an integrated tool chain with several runtime environments, that uses OSGi as it always was intended to be used. By leveraging OSGi's powerful features like services and the powerful requirement/capability model, development of applications can be significantly simplified.
This presentation will provide an introduction to OSGi, the way it is used in enRoute, and then a demo of how to build an application with enRoute.
Bio:
Peter Kriens is an independent consultant since 1990.He currently works for the OSGi Alliance and Paremus. During the eighties he developed advanced distributed systems for newspapers based on microcomputers based on, at the time very novel, object oriented technologies. For this experience in Objects he was hired by a number of international companies, including Adobe, Intel, Ericsson, IBM, and many others. During his work at Ericsson Research in 1998 he got involved with the OSGi specification; Later he became the primary editor for these specifications. In 2005 he was awarded the OSGi Fellows title. After taking a sabbatical in 2012 to develop jpm4j he returned to the OSGi Alliance to help increasing adoption. He is Dutch but decided to live in France.
The document provides an overview of OSGi including its history, specifications, framework implementations, and key concepts like bundles and services. OSGi is a modular Java framework that defines specifications for dynamically deploying and updating Java components/modules called bundles. Bundles communicate via published and discovered services. The OSGi framework provides a managed lifecycle for bundles including installation, starting, stopping, and updating.
Similar to Monoliths are so 2001 – What you need is Modularity (20)
Explore Jakarta EE and MicroProfile on Azure with Open Liberty & OpenShiftGraham Charters
Presentation and demonstration of a Java EE, Jakarta EE, MicroProfile application on WebSphere Liberty and Open Liberty on OpenShift on Microsoft Azure.
You can view the session recording here https://www.youtube.com/watch?v=R9y42aEfmTU
How to get along with HATEOAS without letting the bad guys steal your lunch?Graham Charters
This document discusses how hackers may attempt to exploit APIs and outlines strategies for using HATEOAS to improve API security. It notes that hackers will automatically fuzz APIs using tools to find vulnerabilities. It recommends using HATEOAS to enforce state-based navigation through the API, adding tracking data to links, and having a "front door" endpoint to validate requests and limit guessable paths, reducing opportunities for exploitation. Overall, the document argues that while HATEOAS aims to help clients, naively implementing it does not improve security, and the engine of application state concept should be used thoughtfully to enforce valid request flows and detect unexpected behavior.
Cutting through the fog of microservices: lightsabers optionalGraham Charters
This document provides an overview and comparison of REST, GraphQL, and gRPC for building distributed systems. It discusses key concepts for each approach including resources, schemas, queries, and services. Code examples are provided to demonstrate implementing CRUD operations for a Person resource using each technology. The document concludes that REST is generally purpose but GraphQL and gRPC each excel in certain scenarios like performance and feature-rich APIs. Developers must consider factors like capabilities, ease of use, and adoption when choosing an approach.
Talk given at Devoxx Belgium 2018
Spring Boot is awesome. Docker is awesome. Together you can do great things. But, are you doing it the right way? We'll walk you through, in detail, the optimal way to structure Docker images for Spring Boot applications for iterative development. Structuring your Docker images correctly is really important for teams doing continuous integration and continuous delivery. Using Docker best practices, we'll show you the code and the technologies used to optimize Docker images for Spring Boot apps!
A beginner's guide to Open Liberty (https://openliberty.io/) covering history, getting started, configuration, capabilities, java ee, microprofile, docker, microservices and cloud.
Since the 1960s the industry has been rediscovering the benefits of modularity. Modularity comes in many different guises, from small software objects to deployed systems. Although many approaches to modularity exhibit common characteristics, a number also have unique benefits. This talk will introduce the concepts of modularity, Microservices and OSGi, and compare Microservices and OSGi against a Modularity Maturity Model (a measure of modularity capability and completeness). It will describe how the similarity in characteristics between Microservices and OSGi make these technologies an ideal pairing. Finally, it will cover some of the standard technologies to choose for OSGi technology-based Microservices and new technologies on the horizon.
Get Rapid Right-sized and Recent with the Liberty RepositoryGraham Charters
Presentation given at IBM InterConnect 2015 Conference. Cover:
- introduction to the Liberty Repository
- overview of managing Liberty install using the Liberty Repository.
The document proposes a 6-level Modularity Maturity Model that describes an organization's ability to produce modular systems. Level 1 represents ad hoc development with no modularity. Level 2 introduces formal module identities. Level 3 adds declared module contracts. Level 4 achieves loose coupling through services. Level 5 involves modularity-aware code repositories. Level 6 allows dynamic updating of running systems. The model is intended to help organizations understand current practices and prioritize improvements to increase modular design and development.
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
Discover top-tier mobile app development services, offering innovative solutions for iOS and Android. Enhance your business with custom, user-friendly mobile applications.
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.
Conversational agents, or chatbots, are increasingly used to access all sorts of services using natural language. While open-domain chatbots - like ChatGPT - can converse on any topic, task-oriented chatbots - the focus of this paper - are designed for specific tasks, like booking a flight, obtaining customer support, or setting an appointment. Like any other software, task-oriented chatbots need to be properly tested, usually by defining and executing test scenarios (i.e., sequences of user-chatbot interactions). However, there is currently a lack of methods to quantify the completeness and strength of such test scenarios, which can lead to low-quality tests, and hence to buggy chatbots.
To fill this gap, we propose adapting mutation testing (MuT) for task-oriented chatbots. To this end, we introduce a set of mutation operators that emulate faults in chatbot designs, an architecture that enables MuT on chatbots built using heterogeneous technologies, and a practical realisation as an Eclipse plugin. Moreover, we evaluate the applicability, effectiveness and efficiency of our approach on open-source chatbots, with promising results.
Ivanti’s Patch Tuesday breakdown goes beyond patching your applications and brings you the intelligence and guidance needed to prioritize where to focus your attention first. Catch early analysis on our Ivanti blog, then join industry expert Chris Goettl for the Patch Tuesday Webinar Event. There we’ll do a deep dive into each of the bulletins and give guidance on the risks associated with the newly-identified vulnerabilities.
In the realm of cybersecurity, offensive security practices act as a critical shield. By simulating real-world attacks in a controlled environment, these techniques expose vulnerabilities before malicious actors can exploit them. This proactive approach allows manufacturers to identify and fix weaknesses, significantly enhancing system security.
This presentation delves into the development of a system designed to mimic Galileo's Open Service signal using software-defined radio (SDR) technology. We'll begin with a foundational overview of both Global Navigation Satellite Systems (GNSS) and the intricacies of digital signal processing.
The presentation culminates in a live demonstration. We'll showcase the manipulation of Galileo's Open Service pilot signal, simulating an attack on various software and hardware systems. This practical demonstration serves to highlight the potential consequences of unaddressed vulnerabilities, emphasizing the importance of offensive security practices in safeguarding critical infrastructure.
Fueling AI with Great Data with Airbyte WebinarZilliz
This talk will focus on how to collect data from a variety of sources, leveraging this data for RAG and other GenAI use cases, and finally charting your course to productionalization.
AppSec PNW: Android and iOS Application Security with MobSFAjin Abraham
Mobile Security Framework - MobSF is a free and open source automated mobile application security testing environment designed to help security engineers, researchers, developers, and penetration testers to identify security vulnerabilities, malicious behaviours and privacy concerns in mobile applications using static and dynamic analysis. It supports all the popular mobile application binaries and source code formats built for Android and iOS devices. In addition to automated security assessment, it also offers an interactive testing environment to build and execute scenario based test/fuzz cases against the application.
This talk covers:
Using MobSF for static analysis of mobile applications.
Interactive dynamic security assessment of Android and iOS applications.
Solving Mobile app CTF challenges.
Reverse engineering and runtime analysis of Mobile malware.
How to shift left and integrate MobSF/mobsfscan SAST and DAST in your build pipeline.
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsDianaGray10
Join us to learn how UiPath Apps can directly and easily interact with prebuilt connectors via Integration Service--including Salesforce, ServiceNow, Open GenAI, and more.
The best part is you can achieve this without building a custom workflow! Say goodbye to the hassle of using separate automations to call APIs. By seamlessly integrating within App Studio, you can now easily streamline your workflow, while gaining direct access to our Connector Catalog of popular applications.
We’ll discuss and demo the benefits of UiPath Apps and connectors including:
Creating a compelling user experience for any software, without the limitations of APIs.
Accelerating the app creation process, saving time and effort
Enjoying high-performance CRUD (create, read, update, delete) operations, for
seamless data management.
Speakers:
Russell Alfeche, Technology Leader, RPA at qBotic and UiPath MVP
Charlie Greenberg, host
Generating privacy-protected synthetic data using Secludy and MilvusZilliz
During this demo, the founders of Secludy will demonstrate how their system utilizes Milvus to store and manipulate embeddings for generating privacy-protected synthetic data. Their approach not only maintains the confidentiality of the original data but also enhances the utility and scalability of LLMs under privacy constraints. Attendees, including machine learning engineers, data scientists, and data managers, will witness first-hand how Secludy's integration with Milvus empowers organizations to harness the power of LLMs securely and efficiently.
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...Alex Pruden
Folding is a recent technique for building efficient recursive SNARKs. Several elegant folding protocols have been proposed, such as Nova, Supernova, Hypernova, Protostar, and others. However, all of them rely on an additively homomorphic commitment scheme based on discrete log, and are therefore not post-quantum secure. In this work we present LatticeFold, the first lattice-based folding protocol based on the Module SIS problem. This folding protocol naturally leads to an efficient recursive lattice-based SNARK and an efficient PCD scheme. LatticeFold supports folding low-degree relations, such as R1CS, as well as high-degree relations, such as CCS. The key challenge is to construct a secure folding protocol that works with the Ajtai commitment scheme. The difficulty, is ensuring that extracted witnesses are low norm through many rounds of folding. We present a novel technique using the sumcheck protocol to ensure that extracted witnesses are always low norm no matter how many rounds of folding are used. Our evaluation of the final proof system suggests that it is as performant as Hypernova, while providing post-quantum security.
Paper Link: https://eprint.iacr.org/2024/257
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyScyllaDB
Freshworks creates AI-boosted business software that helps employees work more efficiently and effectively. Managing data across multiple RDBMS and NoSQL databases was already a challenge at their current scale. To prepare for 10X growth, they knew it was time to rethink their database strategy. Learn how they architected a solution that would simplify scaling while keeping costs under control.
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...Jason Yip
The typical problem in product engineering is not bad strategy, so much as “no strategy”. This leads to confusion, lack of motivation, and incoherent action. The next time you look for a strategy and find an empty space, instead of waiting for it to be filled, I will show you how to fill it in yourself. If you’re wrong, it forces a correction. If you’re right, it helps create focus. I’ll share how I’ve approached this in the past, both what works and lessons for what didn’t work so well.
Dandelion Hashtable: beyond billion requests per second on a commodity serverAntonios Katsarakis
This slide deck presents DLHT, a concurrent in-memory hashtable. Despite efforts to optimize hashtables, that go as far as sacrificing core functionality, state-of-the-art designs still incur multiple memory accesses per request and block request processing in three cases. First, most hashtables block while waiting for data to be retrieved from memory. Second, open-addressing designs, which represent the current state-of-the-art, either cannot free index slots on deletes or must block all requests to do so. Third, index resizes block every request until all objects are copied to the new index. Defying folklore wisdom, DLHT forgoes open-addressing and adopts a fully-featured and memory-aware closed-addressing design based on bounded cache-line-chaining. This design offers lock-free index operations and deletes that free slots instantly, (2) completes most requests with a single memory access, (3) utilizes software prefetching to hide memory latencies, and (4) employs a novel non-blocking and parallel resizing. In a commodity server and a memory-resident workload, DLHT surpasses 1.6B requests per second and provides 3.5x (12x) the throughput of the state-of-the-art closed-addressing (open-addressing) resizable hashtable on Gets (Deletes).
Taking AI to the Next Level in Manufacturing.pdfssuserfac0301
Read Taking AI to the Next Level in Manufacturing to gain insights on AI adoption in the manufacturing industry, such as:
1. How quickly AI is being implemented in manufacturing.
2. Which barriers stand in the way of AI adoption.
3. How data quality and governance form the backbone of AI.
4. Organizational processes and structures that may inhibit effective AI adoption.
6. Ideas and approaches to help build your organization's AI strategy.
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfChart Kalyan
A Mix Chart displays historical data of numbers in a graphical or tabular form. The Kalyan Rajdhani Mix Chart specifically shows the results of a sequence of numbers over different periods.
2. Agenda
• Monoliths & Modularity
• Modularity and Java
• Introduction to OSGi
• Dismantling the Monolith
• A Case Study – Acme Air
• What’s new in OSGi Applications
• Summary
1
4. Why Monoliths
• No project sets out to create a
monolith
• Projects evolve
• Teams evolve
• Architecture knowledge is lost
leading to sub-optimal decisions
5. How do we preserve knowledge?
• Design documentation?
• Wiki?
• Email?
• Work items?
• IRC?
• Brain?
• Developers make the decisions, and where do they hang out?
4
We need to capture and enforce the architectural knowledge in the code
6. Modularity
• Concept of Modularity in Software dates back to the 1960
• For a module systems to preserve architectural knowledge it needs the follow
qualities
• Reflect the right level(s) of architectural granularity
• Support the Reuse/Release Equivalence Principle
• Capture modularity information in the code
• Enforce modularity
5
None of your
business
What I can
provide to you
What I will need
from you
8. 7
Base Java modularity is inadequate
• Classes too fine-grained
• Jars are packaging with no explicit
requirements/capabilities
• Linear classpath
Java EE modularity is inadequate
• Across apps - each archive typically contains
all required libraries
• Common libraries/frameworks get
installed with each application
• Multiple copies of libraries in memory
• Within apps - 3rd party libraries
consume other 3rd party libraries
leading to conflicting versions on
the application classpath.
webB.war
WEB-INF/classes/servletB.class
WEB-INF/lib/json4j.jar
WEB-INF/lib/commons-logging.jar
WEB-INF/lib/junit.jar…
webC.war
WEB-INF/classes/servletC.class
WEB-INF/lib/json4j.jar
WEB-INF/lib/commons-logging.jar
WEB-INF/lib/junit.jar…
plankton.v1
plankton.v2
Modularity Issues in Java EE
10. 9
Bundle
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: My Example Bundle
Bundle-SymbolicName: com.my.bundle
Bundle-Version: 1.0.0
Export-Package: com.something.i.provide;version="1.0.0"
Import-Package: com.something.i.need;version="[1.1,2.0)"
Bundle
Bundle
Bundle
Manifest-Version : 1.0
Bundle-ManifestVersi
Manifest-Version : 1.0
Bundle-ManifestVersi
Manifest-Version : 1.0
Bundle-ManifestVersi
OSGi Modules (aka Bundles)
• A Jar plus OSGi Manifest, includes:
• Bundle Identity
• Exported Packages
• Imported Packages
• Dependency resolution
“wires” bundles into
a dependency graph
• Each gets its own
class loader
• Classloading
delegates via graph
Classloader
Classloader
Classloader
Classloader
11. 10
Dynamic Bundle Lifecycle
• Bundles have a dynamic
lifecycle
• Can come and go
independently
• APIs enable graceful
reaction to changes
Bundle
INSTALLED
RESOLVED
UNINSTALLED
STARTING
ACTIVE
STOPPING
install
update
refresh
uninstall
update
refresh
stop
policy
resolve
uninstall
12. 11
Local Services
• Publish/find/bind service model
• Fully dynamic
• Local
• Non-durable
• Primary mechanism for bundle collaboration
• POJO advertized with properties and/or interface and/or
class
service
Provider
Bundle
Consumer
Bundle
registerget
listen
14. Background
• First surfaced to applications in a WAS v7 Feature Pack
• http://www-01.ibm.com/software/webservers/appserv/was/featurepacks/
• Modular development, deployment and management
• Blueprint (Standardized Spring Component Model)
• Web applications (Java EE 5)
• Remote Services and Heterogeneous Assembly (SCA)
• Included in the WAS Base in v8 and continually extended:
• Java EE 6 Web technologies
• Post-deployment configuration
• Performance metrics
• In-place Update
• Application Extension
• Modular EJB
• Blueprint Role-based Security
• OSGi Applications Web Console
• Liberty Profile support
13
15. Component Models
Category Full Profile Liberty Profile
Presentation Servlet, JSP, JSF Servlet, JSP, JSF
Business Blueprint*, EJB Blueprint*
Persistence JPA, JDBC JPA, JDBC
Integration JAX-RS, JMS, SCA JAX-RS, JAX-WS, JMS
14
Component models for enterprise Web applications
Re-use rather than re-invent
• Java EE, Spring
*some differences in supported namespaces
16. Web Application Bundle
• Web Application Bundle (WAB) = WAR + OSGi metadata
• Web-ContextPath: header used to specify default context root
• OSGi Manages
• Module Lifecycle
• Classloading (opportunity to split out WEB-INF/lib)
• Service Integration
• Web Container Manages
• Web component life-cycle, serving, etc...
webC.war
logging f/w
persistence f/w
MVC f/w
webB.war
logging f/w
persistence f/w
MVC f/w
webA.war
logging f/w
persistence f/w
...
WEB-INF/classes/servletA.class
WEB-INF/web.xml
WEB-INF/lib/…
webA.jar
WEB-INF/classes/servletA.class
WEB-INF/web.xml
META-INF/MANIFEST.MF
webA.jar
WEB-INF/classes/servletA.class
WEB-INF/web.xml
META-INF/MANIFEST.MF
webA.jar
WEB-INF/classes/servletA.class
WEB-INF/web.xml
META-INF/MANIFEST.MF
logging f/w
persistence f/w
...
These can
become shared
bundles
17. Bundle
Blueprint Components and Service
• Dependency Injection container
• Standardizing established Spring conventions
• Configuration and dependencies declared in Blueprint XML
• Standardization of Spring “application context” XML
• Extended for OSGi: publish/consume components as OSGi services
• Simplifies unit test outside either Java EE or OSGi r/t
• Integrated into server runtime to simplify deployment & support
16
dependencies injected
publishes
service
consumes
service
Blueprint container scoped by
a bundle (one per bundle).
Multiple <blueprints /> per
container.
A static assembly and
configuration of beans
(POJOs)
Blueprint managed bundle
19. EJB Bundle
• EJB Bundle = EJB Jar + OSGi Metadata
• Export-EJB: Opt-in header for EJB Bundles
– Existence: process bundle for EJBs
– Absence: do not process bundle for EJBs, even if it contains them
• Header value governs registration of EJBs as OSGi Services
– Excludes Message-Driven and Stateful beans
– Best practice: only export EJBs to be shared outside bundle
• EJBs run in the same WAS EJB Container
• Uses OSGi for Classloading and Life-cycle
18
Example Meaning
Export-EJB: Process all EJBs and register them as OSGi services
Export-EJB: BlogBiz,
BlogPersistence
Process all EJBs, register BlogBiz and BlogPersistence as
services if they exist
Export-EJB: NONE Process all EJBs but don’t register them as OSGi services
20. Persistence Bundle
• Persistence Bundle = Persistence Archive + OSGi Metadata
• Meta-Persistence: opt-in header
• Identifies the location of the persistence xml file
• Defaults to META-INF/persistence.xml
• Datasource lookup mechanisms:
<jta-data-source>
<!-- component name is the name of a blueprint resource reference -->
blueprint:comp/blueprint_component_name
</jta-data-source>
<jta-data-source>
osgi:service/javax.sql.DataSource/(osgi.jndi.serviceName=
jndi_name_of_the_data_source)
</jta-data-source>
<jta-data-source>
jndi_name_of_the_data_source
</jta-data-source>
21. .eba
OSGi Application
• Isolated, cohesive collection
of bundles
• Defined by application
manifest
• Configuration by
exception
• Deployed as .eba archive (zip
file)
• Provisioning resolves
application against archive
contents and configured
bundle repositories
APPLICATION.MF
Application-Name: Color Blender Application
Application-SymbolicName: colors.blender.simple.app
Application-ManifestVersion: 1.0
Application-Version: 1.0.1
Manifest-Version: 1.0
Application-Content:
colors.blender;version="[1.0.0,2.0.0)",
colors.provider.green;version="[1.0.0,2.0.0)",
colors.provider.red;version="[1.0.0,2.0.0)",
colors.web;version="[1.0.0,2.0.0)",
colors.provider.ejb.blue;version="[1.0.0,2.0.0)"
Application-ImportService:
colors.adjustment.api.BrightnessService
Application-Name: Color Blender Application
Application-SymbolicName:
colors.blender.simple.app
Application-ManifestVersion: 1.0
Application-Version: 1.0.1
Manifest-Version: 1.0
Application-Content:
colors.blender;version="[1.0.0,2.0.0)",
colors.provider.green;version="[1.0.0,2.0.0)",
colors.provider.red;version="[1.0.0,2.0.0)",
colors.web;version="[1.0.0,2.0.0)",
colors.provider.ejb.blue;version="[1.0.0,2.0.0)"
Application-ImportService:
colors.adjustment.api.BrightnessService
colors.web
colors.blender
22. OSGi Application Provisioning
• Application manifest allows
version ranges for contents
• Deployment Manifest
(optional) locks down exact
versions
• Provisioning resolves
application against archive
contents and configured
bundle repositories
• Non-content bundles satisfy
unresolved application
package and service
dependencies
• shared between
applications on same
server
.eba
APPLICATION.MF
DEPLOYMENT.MF
colors.api
colors.
web
colors.
blendercolors.
provider.
blue
Shared Bundles
colors.
blender
OSGi Application
colors.
provider.
blue
colors.api
colors.
web
24. Adoption Strategies
• Favoured Java EE Approach:
1. Replicate existing classloading in OSGi using bundle fragments
2. Incrementally separate out individual bundles
3. Adopt OSGi best practices
• Considers Java EE classloading and component models
• Surfaces OSGi early, and incrementally - a staged approach
23
beans
core
ejb3
entities
json-proxy
soap
wsappclient
streamer
web
app-host
logcoreejb3
wab
web
app-host
logcoreejb3
wab
web
log
http://www.slideshare.net/GrahamCharters/modularizing-existingenterpriseapplicationsos-gicommunityevent2012v01
25. Stage 1: Understanding the starting point
• Java EE prescribes a hierarchical
classloading model
• Assuming “parent first” and “multiple”:
• Each Application has own
classloader
• Each WAR has own class loader
• WAR has visibility to Application
classes
• WAR prefers Application classs,
Application prefers System classes,
etc...
• OSGi modularity enforced through class
visibility using classloaders
• Migration strategies need to consider the
impact of this change
• e.g. replicate visibility relationships
of existing application in OSGi
24
Bootstrap
Extensions
System
Application Application
WAR WAR WAR
26. Stage 1: Replicating Java EE classloading
• Preserve Application and WAR roles
• Application -> Application Host
Bundle
• Add application modules to
fragments of host bundle
• Web App Archive -> Web Application
Bundle
• Add WEB-INF/classes to
Bundle-Classpath
• Extract WEB-INF/lib jars and
add as fragments of Web
Application Bundle
• We now have two classloaders just as
we did in Java EE
• We also have full visibility of the
modules
25
System
Application
WAR
app-host
logcoreejb3
wab
web
27. Stage 2: Factoring out Bundles
• Now the application’s running in OSGi we can start to split out the
fragments as independent, re-usable bundles
• Strategy:
• Do one fragment at a time
• Start with the leaf dependencies
– Wab bundle contents first, then the app bundle
– Project build dependencies help with identification
– Third-party libraries
– “shared libraries” (if runtime supports this concept)
• Detach from host and calculate the package imports & exports
26
wab
web
wab
web
Fragment-Host: wab Export-Package: daytrader.web
Import-Package: daytrader.web
28. Stage 3: Incrementally Adopt Best Practices
• Stage 2 documents the ‘as-is’ architecture, warts-‘n’-all
• OSGi Best Practices show how to make the most of OSGi
http://www.ibm.com/developerworks/websphere/techjournal/1007_charters/1007_charters.html
• Adopting best practices leads to:
• High cohesion - bundles with clear and distinct roles in the
architecture
• Loose coupling - flexible, but necessary, dependencies
• ...which all leads to greater agility, flexibility and re-use
• Development teams can understand and explain the architecture
and are no longer afraid to change the code
• Applications can evolve and new application can be created at a
pace that enables, rather than inhibits, the business
27
30. Acme Air
• A Sample Java EE Web Application
• Key Technologies
• Web content - html, JavaScript
• REST APIs - JAX-RS
• Persistence – JPA
• Spring
• Built using Maven
• Deployed as a WAR with all the
dependencies inside (WEB-INF/lib)
acmeair-webapp.war
acmeair-common.jar
acmeair-service.jar
springxxx.jar
WEB-INF/classes/xxx.class
WEB-INF/web.xml
WEB-INF/lib/…
...
29
34. Stage 1: Fragments
• Fragments used to separate out “modules”
from WAB without affecting classloading
• Update EBA to include Fragments
• First opportunity to see the true package
dependencies
• Opportunity for small refactoring (e.g.
persistence.xml from WAB to persistence
fragment)
33
acmeair-webapp-bundle.jar
WEB-INF/classes/xxx.class
WEB-INF/web.xml
META-INF/MANIFEST.MF
springxxx.jar
acmeair-common-bundle.jar
acmeair-service-bundle.jar
acmeair-service-jpa-bundle.jar
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.5.3</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Fragment-Host>
net.wasdev.wlp.sample.acmeair-webapp-bundle
</Fragment-Host>
</instructions>
</configuration>
</plugin>
persistence.xml
35. Stage 2: Bundles
• Detach Fragments from Host
• Move opt-in headers from Host to new
bundles
• Export packages from Host, if
necessary (e.g. Spring)
• Separation Issue: webapp bootstraps
spring beans from service-jpa then
looks them up
34
acmeair-webapp-bundle.jar
WEB-INF/classes/xxx.class
WEB-INF/web.xml
META-INF/MANIFEST.MF
springxxx.jar
acmeair-service-bundle.jar
acmeair-service-jpa-bundle.jar
acmeair-common-bundle.jar
persistence.xml
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.5.3</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Meta-Persistence>
META-INF/persistence.xml
</Meta-Persistence>
</instructions>
</configuration>
</plugin>
36. Stage 2: Bundles...not quite
• Webapp uses a singleton “ServiceLocator” to get the Spring beans
• Webapp ServiceLocator bootstraps the Spring application context
by trying to load config from the service-jpa bundle but can’t find it
• @ImportResource({"classpath:/spring-config.xml"})
• These modules are too tightly couple and so can’t function
independently.
35
acmeair-webapp-bundle.jar
WEB-INF/classes/xxx.class
WEB-INF/web.xml
META-INF/MANIFEST.MF
springxxx.jar
acmeair-service-jpa-bundle.jar
@ImportResource({"classpath:/spring-config.xml"})
spring-config.xml
37. Stage 2 & 3: Bundles...almost
• ServiceLocator is acting as a Service Registry. OSGi has one of
those.
• Bundle Activator used to bootstrap Spring application context and
register bean services
• Also needed to register EntityManager service for Spring
• Webapp changed to load services from Service Registry
36
acmeair-webapp-bundle.jar
WEB-INF/classes/xxx.class
WEB-INF/web.xml
META-INF/MANIFEST.MF
springxxx.jar
acmeair-service-jpa-bundle.jar
spring-config.xml
SpringActivator
@ImportResource({"classpath:/spring-config.xml"})
ic.lookup("osgi:service/acmeair.CustomerService")
38. Stage 2 & 3: Bundles
• But... there’s still a slight
issues... lifecycle
• Can’t bootstrap Spring if the
Persistence support is not ready
• Could “sleep”, but for how long?
• Solution: use a service lifecycle-
aware component model
(Blueprint)
37
acmeair-webapp-bundle.jar
acmeair-service-jpa-bundle.jar
spring-config.xml
acmeair-common-bundle.jar
EntityManagerFactory
<blueprint
xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<bean id="SpringContextInitializerBean"
class="com.acmeair.jpa.service.config.SpringContextInitializer">
<property name="ctxt" ref="blueprintBundleContext" />
<property name="emf" ref="emf" />
</bean>
<reference id="emf"
interface="javax.persistence.EntityManagerFactory“ />
</blueprint>
blueprint.xml
39. Was it worth it?
• A set of modules re-usable at different levels
• Persistence
• Local Domain Services
• Remote REST Services
• Looser-coupling and higher cohesion
• No persistence content in the Web front-end
• Spring isolated to the module that uses it
• Flexible lifecycle
38
acmeair-webapp-bundle.jar acmeair-service-jpa-bundle.jar acmeair-common-bundle.jar
41. What’s new in WebSphere OSGi Applications
Liberty had addressed a number of top customer requirements through 2014
• Customer Blueprint Namespace Handlers
• Use cases: CXF, Camel, Config Adnim, etc…
• External Bundle Repositories
• Use cases: Rational Asset Manager, Nexus integration
• Local Application to application integration
• Use cases: Application interaction, ‘extension’
• JAX-RS & JAX-WS
• Use cases: Integration & Interop
• Subsystems (beta)
• Uses cases: extension and in-place update
• Be sure to raise RFE to help us prioritize your needs
• https://www.ibm.com/developerworks/rfe/
43. Summary
• Enforce right-scale modularity is key to preserving architectural
knowledge
• Even relatively simple applications can become entangled in the
absence of a good modularity
• A methodical approach to adopting OSGi can deliver results
early and dismantle the monolith
• WebSphere Application Server Liberty Profile is now an even
better platform for Enterprise OSGi
45. Notices and Disclaimers (con’t)
Information concerning non-IBM products was obtained from the suppliers of those products, their published
announcements or other publicly available sources. IBM has not tested those products in connection with this
publication and cannot confirm the accuracy of performance, compatibility or any other claims related to non-IBM
products. Questions on the capabilities of non-IBM products should be addressed to the suppliers of those products.
IBM does not warrant the quality of any third-party products, or the ability of any such third-party products to
interoperate with IBM’s products. IBM EXPRESSLY DISCLAIMS ALL WARRANTIES, EXPRESSED OR IMPLIED,
INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE.
The provision of the information contained herein is not intended to, and does not, grant any right or license under any
IBM patents, copyrights, trademarks or other intellectual property right.
• IBM, the IBM logo, ibm.com, Bluemix, Blueworks Live, CICS, Clearcase, DOORS®, Enterprise Document
Management System™, Global Business Services ®, Global Technology Services ®, Information on Demand,
ILOG, Maximo®, MQIntegrator®, MQSeries®, Netcool®, OMEGAMON, OpenPower, PureAnalytics™,
PureApplication®, pureCluster™, PureCoverage®, PureData®, PureExperience®, PureFlex®, pureQuery®,
pureScale®, PureSystems®, QRadar®, Rational®, Rhapsody®, SoDA, SPSS, StoredIQ, Tivoli®, Trusteer®,
urban{code}®, Watson, WebSphere®, Worklight®, X-Force® and System z® Z/OS, are trademarks of
International Business Machines Corporation, registered in many jurisdictions worldwide. Other product and
service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on
the Web at "Copyright and trademark information" at: www.ibm.com/legal/copytrade.shtml.
46. Thank You
Your Feedback is
Important!
Access the InterConnect 2015
Conference CONNECT Attendee
Portal to complete your session
surveys from your smartphone,
laptop or conference kiosk.