The talk is introduction to OSGi specification and its implementations. It summarizes corner stones of OSGi (bundles, services, components) and describes a technical background of OSGi implementations on a simple example.
Learn Entity Framework in a day with Code First, Model First and Database FirstJibran Rasheed Khan
Learn Entity Framework in a day with Code First, Model First and Database First
•Introduction to Entity Framework (EF)
•Architecture
•What’s new!
•Different approaches to work with (Code first, Database first and model first)
•Choosing right work model
•Pictorial Tour to each model
•Features & Advantages
•Question & Answer
for any help and understanding feel free to contact
thank you
Introduction to the Spring Framework:
Generar description
IoC container
Dependency Injection
Beans scope and lifecycle
Autowiring
XML and annotation based configuration
Additional features
Overview of Spring Boot for the rapid development of Java Applications and Microservices. More information can be found at : https://www.spiraltrain.nl/course-spring-boot-development/?lang=en
Practical and conceptual overview of Javascript prototype paradigm, how to use prototypes, how do they work, and how do they differ from classes, and why there are no real classes in Javascript.
Spring AOP enables Aspect-Oriented Programming in spring applications. In AOP, aspects enable the modularization of concerns such as transaction management, logging or security that cut across multiple types and objects (often termed crosscutting concerns).
Learn Entity Framework in a day with Code First, Model First and Database FirstJibran Rasheed Khan
Learn Entity Framework in a day with Code First, Model First and Database First
•Introduction to Entity Framework (EF)
•Architecture
•What’s new!
•Different approaches to work with (Code first, Database first and model first)
•Choosing right work model
•Pictorial Tour to each model
•Features & Advantages
•Question & Answer
for any help and understanding feel free to contact
thank you
Introduction to the Spring Framework:
Generar description
IoC container
Dependency Injection
Beans scope and lifecycle
Autowiring
XML and annotation based configuration
Additional features
Overview of Spring Boot for the rapid development of Java Applications and Microservices. More information can be found at : https://www.spiraltrain.nl/course-spring-boot-development/?lang=en
Practical and conceptual overview of Javascript prototype paradigm, how to use prototypes, how do they work, and how do they differ from classes, and why there are no real classes in Javascript.
Spring AOP enables Aspect-Oriented Programming in spring applications. In AOP, aspects enable the modularization of concerns such as transaction management, logging or security that cut across multiple types and objects (often termed crosscutting concerns).
El desarrollo de aplicaciones en diversas plataformas y lenguajes en una empresa, es un caso de uso muy común que se presenta a lo largo del tiempo. Así mismo, la necesidad de poder integrar los datos de estas diversas aplicaciones, muchas veces incompatibles entre si, lleva a la necesidad de desarrollar aplicaciones que se encarguen del intercambio de estos datos para lograr un consolidado de información que aporte valor a la empresa.
Al momento de diseñar este tipo de aplicaciones, es común el observar patrones una y otra vez. Dichos patrones han sido recopilados y documentados por Gregor Hohpe y Bobby Woolf en su libro "Enterprise Integration Patterns", en el cual ofrecen una visión completa y muy bien explicada de estos patrones, así como de una nomenclatura que se ha vuelto estándar para representar estos patrones.
Apache Camel es la implementación de la gran mayoría de los patrones propuestos por Gregor y Bobby para la plataforma Java y de manera OpenSource bajo licencia Apache 2.0. Apache Camel es una alternativa a diversas herramientas comerciales para realizar aplicaciones empresariales de integración de aplicaciones.
En la conferencia se mostraran los patrones mas comunes, su notación, diseño e implementación usando Apache Camel, de igual manera se mostrara la infraestructura necesaria para ejecutar Apache Camel, los mecanismos de monitoreo de aplicaciones desarrolladas con Camel y como se puede integrar con productos de integración como Brokers de Mensajería (JMS), Enterprise Service Bus (ESB) y servidores de aplicaciones clásicos
Van Wilson
Senior Consultant with Cardinal Solutions
Find more by Van Wilson: https://speakerdeck.com/vjwilson
All Things Open
October 26-27, 2016
Raleigh, North Carolina
The presentation walks you through Apache maven and how to do a build management for java based applications. It starts with basic introduction on the technology and how it plays an important role for build management. The presentation then talks about details on how the maven works and its philosophy to creating builds. Furthermore, it also covers in detail the plugins based architecture to better understand how to use maven effectively.
Slides of my "Rapid JCR applications development with Sling" at ApacheCon EU 2009. Starts like the US 2008 version but uses a different example for the second part.
General Waf detection and bypassing techniques. Main focus to demonstrate that how to take right approach to analyse the behaviour of web application firewall and then create test cases to bypass the same.
POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...Postman
Presenters: Trent McCann, Engineering Manager, Quality, and Danny Dainton, Senior Quality Engineer
Description: Testing APIs is difficult, it's hard to know where to start. Join us as we take you through some of the different techniques and strategies, using Postman. We will walk you through the basics of Testing using Postman and help answer the questions of "Why do you test?" And "How do you write a test?". We will also talk about making these tests work for you. Pulling it all together and making these tests effective and efficient using Automation practices. Lastly, we will walk you through how to track, trend and some of the hidden benefits of Reporting in Postman, to get the most out of your tests.
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
Les ORM, c’est pratique. Mais cela peut rapidement devenir complexe ou subtile. JPA permet de rapidement modéliser la couche d’accès aux données avec une facilité indiscutable. Cependant, il est préférable de bien en comprendre le fonctionnement pour éviter quelques anti patterns fâcheux.
La formation JPA Avancé proposée par Ippon détaille les aspects techniques et permet d’aller plus loin dans la compréhension et la maîtrise. Enrichie par des TP très fournis lorsqu’elle est dispensée par les formateurs Ippon, elle permet d’assimiler en 3 jours les subtilités et offre les outils pour réaliser une couche d’accès aux données de qualité, performante et maintenable.
Techniques de modélisation, gestion et subtilités du cache (L1, L2), mécanismes transactionnels, langage de requêtage… Tous ces aspects et bien d’autres sont détaillés et illustrés afin de vous apporter les clefs pour vos prochains projets.
Découvrez dès aujourd’hui les slides de cette formation, mis à disposition dans le cadre de l’OpenFormation.
In this presentation, you will learn about the new JSON and JSON Schema support added in the latest Oxygen versions, as well as the support for OpenAPI, AsyncAPI, and JSON-LD. Get the chance to discover the following:
- Smart editing of JSON documents based on the JSON Schema
- Specialized JSON tools
- Editing JSON Schema in design mode
- The OpenAPI, AsyncAPI, JSON-LD support
El desarrollo de aplicaciones en diversas plataformas y lenguajes en una empresa, es un caso de uso muy común que se presenta a lo largo del tiempo. Así mismo, la necesidad de poder integrar los datos de estas diversas aplicaciones, muchas veces incompatibles entre si, lleva a la necesidad de desarrollar aplicaciones que se encarguen del intercambio de estos datos para lograr un consolidado de información que aporte valor a la empresa.
Al momento de diseñar este tipo de aplicaciones, es común el observar patrones una y otra vez. Dichos patrones han sido recopilados y documentados por Gregor Hohpe y Bobby Woolf en su libro "Enterprise Integration Patterns", en el cual ofrecen una visión completa y muy bien explicada de estos patrones, así como de una nomenclatura que se ha vuelto estándar para representar estos patrones.
Apache Camel es la implementación de la gran mayoría de los patrones propuestos por Gregor y Bobby para la plataforma Java y de manera OpenSource bajo licencia Apache 2.0. Apache Camel es una alternativa a diversas herramientas comerciales para realizar aplicaciones empresariales de integración de aplicaciones.
En la conferencia se mostraran los patrones mas comunes, su notación, diseño e implementación usando Apache Camel, de igual manera se mostrara la infraestructura necesaria para ejecutar Apache Camel, los mecanismos de monitoreo de aplicaciones desarrolladas con Camel y como se puede integrar con productos de integración como Brokers de Mensajería (JMS), Enterprise Service Bus (ESB) y servidores de aplicaciones clásicos
Van Wilson
Senior Consultant with Cardinal Solutions
Find more by Van Wilson: https://speakerdeck.com/vjwilson
All Things Open
October 26-27, 2016
Raleigh, North Carolina
The presentation walks you through Apache maven and how to do a build management for java based applications. It starts with basic introduction on the technology and how it plays an important role for build management. The presentation then talks about details on how the maven works and its philosophy to creating builds. Furthermore, it also covers in detail the plugins based architecture to better understand how to use maven effectively.
Slides of my "Rapid JCR applications development with Sling" at ApacheCon EU 2009. Starts like the US 2008 version but uses a different example for the second part.
General Waf detection and bypassing techniques. Main focus to demonstrate that how to take right approach to analyse the behaviour of web application firewall and then create test cases to bypass the same.
POST/CON 2019 Workshop: Testing, Automated Testing, and Reporting APIs with P...Postman
Presenters: Trent McCann, Engineering Manager, Quality, and Danny Dainton, Senior Quality Engineer
Description: Testing APIs is difficult, it's hard to know where to start. Join us as we take you through some of the different techniques and strategies, using Postman. We will walk you through the basics of Testing using Postman and help answer the questions of "Why do you test?" And "How do you write a test?". We will also talk about making these tests work for you. Pulling it all together and making these tests effective and efficient using Automation practices. Lastly, we will walk you through how to track, trend and some of the hidden benefits of Reporting in Postman, to get the most out of your tests.
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
Les ORM, c’est pratique. Mais cela peut rapidement devenir complexe ou subtile. JPA permet de rapidement modéliser la couche d’accès aux données avec une facilité indiscutable. Cependant, il est préférable de bien en comprendre le fonctionnement pour éviter quelques anti patterns fâcheux.
La formation JPA Avancé proposée par Ippon détaille les aspects techniques et permet d’aller plus loin dans la compréhension et la maîtrise. Enrichie par des TP très fournis lorsqu’elle est dispensée par les formateurs Ippon, elle permet d’assimiler en 3 jours les subtilités et offre les outils pour réaliser une couche d’accès aux données de qualité, performante et maintenable.
Techniques de modélisation, gestion et subtilités du cache (L1, L2), mécanismes transactionnels, langage de requêtage… Tous ces aspects et bien d’autres sont détaillés et illustrés afin de vous apporter les clefs pour vos prochains projets.
Découvrez dès aujourd’hui les slides de cette formation, mis à disposition dans le cadre de l’OpenFormation.
In this presentation, you will learn about the new JSON and JSON Schema support added in the latest Oxygen versions, as well as the support for OpenAPI, AsyncAPI, and JSON-LD. Get the chance to discover the following:
- Smart editing of JSON documents based on the JSON Schema
- Specialized JSON tools
- Editing JSON Schema in design mode
- The OpenAPI, AsyncAPI, JSON-LD support
Apache Karaf - Building OSGi applications on Apache Karaf - T Frank & A Grzesikmfrancis
OSGi Community Event 2014
Abstract:
Experience level: Beginner
Apache Karaf is a small OSGi based runtime which provides a lightweight container onto which various components and applications can be deployed.
This session gives an overview over Apache Karaf, how to manage and configure Apache Karaf and how to use the comprehensive command shell that Karaf provides. By the example of a simple pet clinic application we will demonstrate how to build and deploy a web application on Apache Karaf. This talk will introduce the different deployment mechanisms available in Karaf and how to deploy bundles from the file system, command shell or via a maven repository. You will learn how to manage external dependencies via features, use the Karaf maven plugin to create features and build and configure persistence bundles for Apache Karaf. We will further give an overview, how to use Karaf in a cloud environment and how to use the Apache Cellar project to build up an Apache Karaf cluster.
Speaker Bios:
Torsten Frank
Torsten Frank is an entrepreneur and healthcare IT expert with international experience and a strong background in product and business development. He is CEO and founder of medisite, a company that delivers highly specialized healthcare IT solutions to their customers for more than 10 years. medisite is a winner of the Federal Ministry for Economic Affairs and Energy (BMWi) “Trusted Cloud” technology competition, geared toward secure cloud computing for SMEs and the public sector. Torsten Frank holds a medical degree from the Hannover Medical School, where he also has worked for several years as a physician at the Department of Cardiothoracic Surgery after completing his medical studies in Hannover, Germany and Chicago, USA.
Alexander Grzesik
Alexander is the head of development of medisite Systemhaus GmbH and responsible for the development of the the PaaS+ cloud platform the clinical information system m.life and software architect for the TRESOR Project.
He has 15 years of work experience in medical Software development as team leader and software architect.
Expert for Software Architecture, OSGi, Java and Java EE.
Alexander has been a speaker at several conferences including EclipseCon Europe and the OpenShift Community Day.
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Martin Toshev
Seminar "Modularity of the Java Platform" of the Bulgarian Java User Group.
Topics of the seminar:
Modularity 101
Modularity on top of the platform: OSGi
Modularity of the platform: Jigsaw
OSGi and Jigsaw interoperability: Penrose
Apache, osgi and karaf par Guillaume NodetNormandy JUG
Vous avez entendu parler de OSGi (ou pas d’ailleurs), vous aimeriez que l’on vous explique ce que c’est et à quoi cela sert ?
Vous voudriez savoir comment on participe à des projets Open-Source, comment on devient acteur au sein de la fondation Apache ?
Vous avez lu l’excellent article d’Octo de la semaine dernière sur Camel, mais vous n’avez pas tout compris ou voulez en savoir plus ?
Ou tout simplement vous voudriez avoir une présentation de la solution OSGi d’Apache : Karaf ?
OSGi has gained popularity over the last two years. The platform has some very interesting features like versioning, dynamic updates and it's service oriented nature. These characteristics however come with a price. A firm understanding of how and why OSGi works how it works, is a necessity if you plan on getting into OSGi.
This talk will start with some basic principals on the java platform and will gradually move towards the OSGi infrastructure explaining the OSGi fundamentals. The following topics will be covered:
* Classloading in OSGi
* Lifecycle management of OSGi bundles
* OSGi Service, the service registry and service composition models
Afterwards, we will explain the generally accepted best practices and OSGi design patterns.
OSGi ecosystems compared on Apache Karaf - Christian Schneidermfrancis
OSGi Community Event 2015
A look at three competing OSGi ecosystems (Declarative Services, Blueprint, CDI). Capabilities of each DI framework. Comparison of support for EE technologies like JPA, Security, SOAP and REST services, UIs. Looking into some of the recent advancements like Aries JPA 2 featuring closure based transactions, JAAS Security, JSP and JSF on OSGi. Attendees will get a good overview about the stacks as well as recommendations where each is most applicable.
Plugins have evolved in the past year, and the new plugin architecture will be incorporated in all products in 2009. This session dives into the detail of the new plugins system, guides developers on the best techniques and approaches and explores how the architecture will evolve further.
Atlassian Speaker: Don Brown
Key Takeaways:
* In-depth look at plugins 2
* How-tos and code samples
Presentation of GlassFish v3 at JavaZone conference on September 9th 2009. Check this for demos: http://blogs.sun.com/alexismp/entry/glassfish_v3_at_javazone_slides
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.
OSGi & Java EE: A hybrid approach to Enterprise Java Application Development,...OpenBlend society
There's a considerable activity in the enterprise Java community about the use of OSGi in Java EE applications. We call such applications "hybrid applications." With hybrid applications, developers can continue to build standard and familiar enterprise application components, such as Java Servlets and EJBs, and take full advantage of:
* Features such as modularity/dependency management, service dynamism, and more provided by OSGi
* Infrastructure services such as transaction management, security, persistence, and more offered by Java EE
This session will present the current state of affairs, discuss the benefits of hybrid applications, and demonstrate development and deployment of such applications.
GlassFish will be used for demonstration.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
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.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
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
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.
Le nuove frontiere dell'AI nell'RPA con UiPath Autopilot™UiPathCommunity
In questo evento online gratuito, organizzato dalla Community Italiana di UiPath, potrai esplorare le nuove funzionalità di Autopilot, il tool che integra l'Intelligenza Artificiale nei processi di sviluppo e utilizzo delle Automazioni.
📕 Vedremo insieme alcuni esempi dell'utilizzo di Autopilot in diversi tool della Suite UiPath:
Autopilot per Studio Web
Autopilot per Studio
Autopilot per Apps
Clipboard AI
GenAI applicata alla Document Understanding
👨🏫👨💻 Speakers:
Stefano Negro, UiPath MVPx3, RPA Tech Lead @ BSP Consultant
Flavio Martinelli, UiPath MVP 2023, Technical Account Manager @UiPath
Andrei Tasca, RPA Solutions Team Lead @NTT Data
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
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.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
PHP Frameworks: I want to break free (IPC Berlin 2024)
OSGi Presentation
1. OSGi
Michal Malohlava
Charles University in Prague
Faculty of Mathematics and Physics
Czech Republic
2. Introduction
OSGi overview CZJUG, Prague – May 28, 2008
• Distributed Systems Research Group
http://dsrg.mff.cuni.cz/
Formal methods sub-group
Benchmarking gang
Components team
• Components team
SOFA2 component system
• http://sofa.ow2.org/
2
4. OSGi history
OSGi overview CZJUG, Prague – May 28, 2008
• OSGi alliance
Open Services Gateway initiative
• Founded 1999
• OSGi specification release 1 – 2000
• OSGi specification target
Define Java-based service platform, full dynamic
component model
Why?
• JVM does not support natively dynamic module system -
starting, stopping, updating application at runtime
• JAR dependencies management missing
No way how to restrict exported packages, enforce imports
4
5. OSGi motivation
OSGi overview CZJUG, Prague – May 28, 2008
• OSGi – kind of Java Operating System
• Configuration of application
“LEGO” principle :-)
• Reusability
• Scalability
• Portability
Abstraction of underlying hardware
Standardized execution environment
• Application isolation/security
Well defined classloading
• Easy managing life-cycle of application
Dynamic updates, modification of running modules
Not-only for enterprise solutions
• Embedded devices
Service oriented architecture 5
6. OSGi current state
OSGi overview CZJUG, Prague – May 28, 2008
• OSGi specification
Release 4.1 – May 2007
• core + compendium (contains mobile spec. from R3)
• Implementation
Open source
• Eclipse Equinox
Many extensions of OSGi, e.g. bundles aspects
• Apache Felix
Based on Oscar (implementation of OSGi R3)
• Knopflerfish
• Concierge
Implementation of OSGi R3, optimized for embedded devices
Commercial
• ProSyst, Knopflerfish Pro
6
7. OSGi architecture
OSGi overview CZJUG, Prague – May 28, 2008
• OSGi framework
Bundles (modules)
Execution environment
Application life cycle
Services
• Service registry
Security
• Application share
the same JVM
Isolation/security
7
8. Execution environment
OSGi overview CZJUG, Prague – May 28, 2008
• OSGi platform can run on different target devices
Profiles in specification
• OSGi/Minimum-1.1, CDC-1.1/Foundation-1.1
Other profiles
• J2SE-1.4, J2SE-1.5
OSGi APIs only use a subset of J2SE and J2ME
• Matches most profiles
• Application can enforce the profile
8
9. Bundle
OSGi overview CZJUG, Prague – May 28, 2008
• Bundle
Basic deployment entity (~ application, library)
Versioned (1.0.2.rc3 – major, minor, micro, qualifier)
Declaratively specified dependencies
Represented as JAR file of Manifest-Version: 1.0
• Code, Resources Bundle-Name: LogTargetBundle
Bundle-Activator: LogTargetActivator
• Extended manifest file Bundle-SymbolicName: LogTargetBundle
• Bundle fragments Bundle-Version: 1.0.0
Import-Package: org.osgi.framework;
Similar to bundles version=”1.3.1”
• Allow extending an existing bundle
represent e.g. native implementation, require a host bundle
• Bundle context
Representation of bundle instance in the framework
Installation of new bundle, bundle properties
Access to persistent storage
Services management, Listeners management 9
11. Bundle Activator
OSGi overview CZJUG, Prague – May 28, 2008
• Class defined in MANIFEST
Bundle-Activator header
public class SimpleLogTargetActivator {
• Can be an external class
@Override
• Handle bundle start/stop public void start(BundleContext context){
/* ... */
}
Start @Override
• Register services public void stop(BundleContext context) {
/* ... */
• Create service trackers }
}
• Start threads
Stop
• Release resources
Unregister services
Release services
11
12. Bundle dependencies
OSGi overview CZJUG, Prague – May 28, 2008
Export-Package: cz.*;
• Expose packages exclude=”*Impl”
List all of packages + versions + attributes
Fine grained package filtering
• Import bundle Import-Package: cz.mff.*;
version=”[1.0,1.3.1)”
Require specific version(s)
• e.g. [1.0, 2.0)
• Require bundle Require-Bundle: logger-api-bundle
Not recommended because it restricts further changes
in API
• Bundle class path Bundle-Classpath: ., lib/bsh.jar
12
13. Technical background of classloading
OSGi overview CZJUG, Prague – May 28, 2008
• Separated class loaders for each bundle
• Defined lookup order
Parent (only for class from java.* package)
Imported packages
Required bundles
Local class path
Image from the book OSGi in Practice, Neil Barlett
13
14. Service
OSGi overview CZJUG, Prague – May 28, 2008
• Bundles – static entities
Static dependencies through packages
How to communicate between bundles?
• Services – dynamics in OSGi
Can appear, disappear at runtime in according to a condition
For one service name multiple providers can exist
Bundles collaboration
• Well defined communication points
Services permit bundles to detect environment and adapt their behavior
• Query language
• Service
Object, registered by a bundle
• BundleContext.registerService(iface, implementation, properties)
• Service registry
• Framework automatically unregister all services of stopped bundle
Service has properties (can be modified)
Framework manages relation service <-> using bundle 14
15. Registering service (1)
OSGi overview CZJUG, Prague – May 28, 2008
• Programatically in BundleActivator
public void start(BundleContext context) {
SimpleLogTargetImpl logTargetImpl = new SimpleLogTargetImpl();
registration = context.registerService(
ILogTarget.class.getName(),
logTargetImpl,
null);
}
• Problems
Code
• Semantics is not clear
dependencies, properties, implementation v. provided interface
• Simplicity
15
16. Registering service (2)
OSGi overview CZJUG, Prague – May 28, 2008
• Declaratively
Automated service management by framework
• Declarative service
• Dependency injection of required services
Services provided by components
• Component
Entity providing/requiring exactly specified interfaces
Optional, mandatory, collection interface
<component name=quot;logger-componentquot;>
<implementation class=quot;cz.cuni...LoggerImplquot;/>
<service>
<provide interface=quot;cz...ILoggerquot;/>
</service>
<reference name=quot;TARGETquot;
interface=quot;cz...ILogTargetquot;
bind=quot;addLogTargetquot;
unbind=quot;removeLogTargetquot;
cardinality=quot;0..nquot;
policy=quot;dynamicquot;/>
</component>
16
17. Service consuming
OSGi overview CZJUG, Prague – May 28, 2008
• Bundle can search for service which implements
specific interface (defines semantics of the
service) Service reference ref =
context.getServiceRef(“cz.bar”);
• Several bad solution if (ref!=null) {
Bar bar = (Bar) context.getService(ref);
if (bar != null) {
context.getService(...) ...
context.ungetService(ref)
• Nasty code }
}
Listeners
• Just inform about changes
• Components <component name=”getServiceComp”>
<implementation class=”GetLoggerService”>
<reference name=”log”
Declare getter component interface=”org.osgi...LogService”
bind=”setLog”
• Service tracker unbind=”unsetLog”
</component>
17
18. Service tracker
OSGi overview CZJUG, Prague – May 28, 2008
• Tracking for service
Filters (name, id, property, owning bundle, ...)
• LDAP syntax (e.g. (&(objectName=”foo”)(property1=”Xyz”)) )
Adding service to registry, removing, update
//In Bundle Activator - start Name of service to track
tracker = new ServiceTracker(context,
ILogger.class.getName(),
null);
tracker.open(); ServiceTrackerCustomizer
- customize behavior of adding,
// get the service(s) removing, modifying the service
ILogger log = (ILogger)tracker.getService();
Ilogger log = (Ilogger)
tracker.waitForService(1000);
// stop tracking
tracker.close();
18
19. Whiteboard pattern
OSGi overview CZJUG, Prague – May 28, 2008
• Services dependencies
Content provider v. content consumers
• e.g. Register new service if and only if the specified service
appears
“Don't look for content providers, let them to register as
services and track for the services”
ServiceTracker capture service life-cycle
• via ServiceTrackerCustomizer
Capture process of adding/removing/modifying service
19
21. Services
OSGi overview CZJUG, Prague – May 28, 2008
• Http
Exposing registered servlets
• Event
Messaging Producer <-> Consumer
• Device manager
• Diagnostics/Monitoring
JMX (in Equinox sandbox)
• Application manager
Application package – set of resource (bundles, data,...)
• Can be deployed/install
• Location/measurement services
21
22. Security layer
OSGi overview CZJUG, Prague – May 28, 2008
• Optional
• Based on Java 2 security architecture
• 4 roles
Developer
• Adds local permissions to the bundle by signing
Admin, Service, Bundle permissions
Deployer
• Signs the bundle and deploys it
• Resulting bundle permissions = intersection of bundle and
target environment permissions
Operator
• Full control all the time
End user
22
23. Issues of OSGi R4
OSGi overview CZJUG, Prague – May 28, 2008
• No repository defined
No single trusted point for downloading bundles
• Each implementation has its own OBR (OSGi bundle
repo.)
No automatic download of required bundles/packages
Currently just RFC-112
• Searching by capabilities
Planned in OSGi R5
• Bundle dependency resolver
Resolving bundles can take long time
Maximal sharing of packages
• Stale service problem
Services can exchange objects connected to a bundle classloader.
What happens when this bundle is stopped? 23
24. Related projects
OSGi overview CZJUG, Prague – May 28, 2008
• rOSGi
Access services in a remote OSGi
• Glassfish v3
OSGi replace HK2 (module subsystem)
Uses Apache Felix
• SpringDM (Spring-OSGi)
Integration of OSGi inside Spring
• Spring application platform
Similar concept to OSGi, cooperates with it, reuses bundles
Defines bundles repository
• JSR 277
Java Modules, proposed OSGi interoperability
24