This document discusses using OSGi and Spring Data to develop simple web applications. It describes using Bndtools for OSGi application development and the enRoute project for getting started with OSGi. It provides an overview of using JPA and Spring Data with OSGi for the persistence layer. It also covers integrating Handlebars templates, Jersey MVC, and helpers for the web layer. Testing strategies using Spock are also summarized. Key technologies discussed include AngularJS, Jetty, OSGi, Spring Data JPA, and Spock.
Modular JavaScript in an OSGi World - S Makmfrancis
What percentage of your web-app is written in JavaScript? Don’t be surprised if it’s more than half of your codebase. With the advent of HTML5 and single-page-applications driven by RESTful backends, the amount of JavaScript keeps growing. On the Java side, OSGi allows us to create modular, flexible applications. But how does this translate to the client-side? Isn’t a ‘single-page-application’ fundamentally at odds with modularity?
In this session we take a look at the currently available tools for modularity in JavaScript. There are several ways you can combine existing JavaScript module systems with OSGi-based development on the backend. We discuss tradeoffs between these different approaches based on real-world experience with large JavaScript front-ends and OSGi back-ends. In particular an example combining OSGi, RequireJS and AngularJS is presented. Along with practical advice based on current technology, we also look forward at relevant upcoming standards such as Web Components. After this session you’ll have a solid grasp of modular JavaScript development in an OSGi world.
Bio:
After getting his master's degree in Software Technology, Sander became a software developer/architect. Currently he works as Senior Software Engineer for Luminis Technologies, specializing in modular Java and JavaScript development. Additionally, data analysis and machine learning are part of his ever growing list of interests. Sander loves sharing knowledge, for example through his blog (at http://branchandbound.net) and by writing for the Dutch Java Magazine. He speaks regularly at various international developer conferences (including JavaOne, J-Fall, JEEConf), sharing his passion for Java, alternative JVM languages and related technologies.
OSGi DevCon 2013
One of the real surprises in my career has been the emergence of JavaScript as an increasingly reasonable choice as a systems language. In this talk I'll make the case that it's time for the OSGi community to gather and start looking at creating specifications for JavaScript based implementations. The Orion team started with an OSGi-insired MicroService architecture and in the past year has grown to also include a plugin architecture that is closely aligned with both OSGi bundle metadata and lifecycle concepts. We will use Orion as an example to discuss areas that we think are suitable for standardization.
RESTful OSGi Web Applications Tutorial - Khawaja S Shams & Jeff Norrismfrancis
OSGi DevCon 2008
NASA has been using the Eclipse Rich Client Platform (RCP) as the foundation for many of its rover operations tools for several years. Recently, we started using the Equinox project to extend our applications to the server as well. Along the way, we discovered REST, an intuitive, lightweight methodology for building web applications. In this tutorial, we will share the techniques that we have learned to combine these technologies into web services that are easy to develop, deploy, and use.
This tutorial will be focused on an entertaining set of space-related hands-on exercises that will teach participants to develop, integrate and deploy RESTful web applications on top of OSGI. Participants will walk away with an example RCP application and its Equinox server side support, along with an understanding of how each component functions. The presentation will also discuss issues associated with maintaining the server side code, securing the web applications, and performance. We will be deploying web based services through extension points, so the users will also be able to extend the example project to integrate additional web-services or use the skeleton for their own server side application. We will finally deploy the application to a tomcat server for production usage.
This tutorial will provide a hands-on demonstration of how Equinox and the Restlet framework make a unique combination that takes advantage of the powerful features offered by OSGI and the simplicity offered by REST. Web based services can offer a new whole new set of features to complement an RCP application, and we will demonstrate how simple this can be with a solid and battle tested framework behind the web applications.
Audience
We recommend that audience members have basic familiarity with plugin development and come prepared to code. Audience members without development experience will gain background information on evaluating Equinox for the architecture of their web based applications.
Explaining how OSGi helps creating extensible systems. The source code examples for this presentation can be found here: https://bitbucket.org/paul_bakker/modularity-patterns-with-osgi-examples
Modular JavaScript in an OSGi World - S Makmfrancis
What percentage of your web-app is written in JavaScript? Don’t be surprised if it’s more than half of your codebase. With the advent of HTML5 and single-page-applications driven by RESTful backends, the amount of JavaScript keeps growing. On the Java side, OSGi allows us to create modular, flexible applications. But how does this translate to the client-side? Isn’t a ‘single-page-application’ fundamentally at odds with modularity?
In this session we take a look at the currently available tools for modularity in JavaScript. There are several ways you can combine existing JavaScript module systems with OSGi-based development on the backend. We discuss tradeoffs between these different approaches based on real-world experience with large JavaScript front-ends and OSGi back-ends. In particular an example combining OSGi, RequireJS and AngularJS is presented. Along with practical advice based on current technology, we also look forward at relevant upcoming standards such as Web Components. After this session you’ll have a solid grasp of modular JavaScript development in an OSGi world.
Bio:
After getting his master's degree in Software Technology, Sander became a software developer/architect. Currently he works as Senior Software Engineer for Luminis Technologies, specializing in modular Java and JavaScript development. Additionally, data analysis and machine learning are part of his ever growing list of interests. Sander loves sharing knowledge, for example through his blog (at http://branchandbound.net) and by writing for the Dutch Java Magazine. He speaks regularly at various international developer conferences (including JavaOne, J-Fall, JEEConf), sharing his passion for Java, alternative JVM languages and related technologies.
OSGi DevCon 2013
One of the real surprises in my career has been the emergence of JavaScript as an increasingly reasonable choice as a systems language. In this talk I'll make the case that it's time for the OSGi community to gather and start looking at creating specifications for JavaScript based implementations. The Orion team started with an OSGi-insired MicroService architecture and in the past year has grown to also include a plugin architecture that is closely aligned with both OSGi bundle metadata and lifecycle concepts. We will use Orion as an example to discuss areas that we think are suitable for standardization.
RESTful OSGi Web Applications Tutorial - Khawaja S Shams & Jeff Norrismfrancis
OSGi DevCon 2008
NASA has been using the Eclipse Rich Client Platform (RCP) as the foundation for many of its rover operations tools for several years. Recently, we started using the Equinox project to extend our applications to the server as well. Along the way, we discovered REST, an intuitive, lightweight methodology for building web applications. In this tutorial, we will share the techniques that we have learned to combine these technologies into web services that are easy to develop, deploy, and use.
This tutorial will be focused on an entertaining set of space-related hands-on exercises that will teach participants to develop, integrate and deploy RESTful web applications on top of OSGI. Participants will walk away with an example RCP application and its Equinox server side support, along with an understanding of how each component functions. The presentation will also discuss issues associated with maintaining the server side code, securing the web applications, and performance. We will be deploying web based services through extension points, so the users will also be able to extend the example project to integrate additional web-services or use the skeleton for their own server side application. We will finally deploy the application to a tomcat server for production usage.
This tutorial will provide a hands-on demonstration of how Equinox and the Restlet framework make a unique combination that takes advantage of the powerful features offered by OSGI and the simplicity offered by REST. Web based services can offer a new whole new set of features to complement an RCP application, and we will demonstrate how simple this can be with a solid and battle tested framework behind the web applications.
Audience
We recommend that audience members have basic familiarity with plugin development and come prepared to code. Audience members without development experience will gain background information on evaluating Equinox for the architecture of their web based applications.
Explaining how OSGi helps creating extensible systems. The source code examples for this presentation can be found here: https://bitbucket.org/paul_bakker/modularity-patterns-with-osgi-examples
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneDeepu S Nath
Introduction and Comparison of polpular JS Frameworks Knockout, Ember, Angular and Backbone. The presentation descrobes How and when to select each framework.
There are lots of libraries and frameworks you can use when building browser based JavaScript applications. Probably the most popular library is jQuery. But while jQuery makes it easy to write cross browser user interface code that manipulates the DOM it’s UI focus makes it less then perfect for large business applications. One of the JavaScript based MVC frameworks that has been gaining a lot of popularity for creating business applications is AngularJS. Wen using AngularJS you get the benefit of a powerful data-binding framework that guides you towards a proper application model with a proper separation between the UI layer and the business layer. It also contains a powerful dependency injection framework making code much more testable than before.
In this session Maurice de Beijer will show you how to get started with AngularJS and how productive you can be when creating line of business applications.
React native: building native iOS apps with javascriptPolidea
React-Native is Facebook's React based native application framework. You can write iOS applications using native Views and Controls, while the whole application logic is written in Javascript (the good parts of it in fact). Soon Android version will be released but for now we can build iOS apps with it.
AngularJS - Architecture decisionsin a large project Elad Hirsch
Architecture Decisions in a large project (Elad Hirsch, Web team Leader @ IDI)
At this session we will take practical road - look into IDI Full-Stack architecture, dive around the spec and explore the challenges developing a large scale web project.
Learn Developing REST API in Node.js using LoopBack FrameworkMarudi Subakti
This slide has been presented by me (Marudi Tri Subakti) on event Monthly Meetup Facebook Developer Circle Malang (devc-mlg-meetup-201703.splashthat.com) at 26th March 2017
[Note that this talk is not available outside some very specific settings but this deck is here for you as a basic resource to form a basis for your own analysis based on my reasonably objective extensive professional experience using both technology sets in the real world]
Java EE 7 has been one of the most significant overhauls of the platform. Just some of the changes include retiring EJB 2 entity beans and JAX-RPC, greater alignment with CDI, WebSocket/HTML 5 support, a standard API for JSON processing, the next version of JAX-RS, an overhaul of JMS, long-awaited concurrency utilities, batch processing in Java EE and much, much more. In order to make educated choices for adoption, one should understand how the widely-used Spring Framework aligns with Java EE.
This session will compare and contrast the Spring Framework with Java EE 7. We will focus on key areas that include the component development model, dependency injection, persistence, UI, REST, messaging, security and testing. Beyond API/features, the analysis will take a holistic view in covering concerns such as ease-of-use, manageability, ecosystem and vendor-neutrality.
On September 25th we hosted a webinar on “Step by Step AngularJS for beginners” for the Indian region and we’d like to share the presentation and recorded webinar with you now! In the webinar, we covered:
• Introduction to AngularJS
• Introduction to SPA
• Controller and $scope object
• Controller hierarchy
• Service and factory methods
• Routing
• CRUD operations in AngularJS application
And more!
Google Developer Group(GDG) DevFest Event 2012 Android talkImam Raza
This presentation is Imam Raza's tech talk on "Android" in Google Developer Group DevFest 2012 Event. In the event Mr. Imam Raza condemned recent blasphemy act of Google of not removing blasphemy video by saying "Shame on You". He also appreciated the efforts of minorities who stand with Muslim community on this issue.
He also read following Stanza from Allama Iqbal poem "Jawaab-e-Shikwa", in which Allah is answering to complains of Muslims to Him. In below stanza Allah is praising His prophet Mohammad (peace be upon him) and telling that this universe is made due His beloved prophet Mohammad (peace be upon him). In last part of stanza Allah tells Muslims that if they want to success in this world and there after then they have to make themselves loyal to Mohammad (peace be upon him).
ہو نہ یہ پھول تو بلبل کا ترنم بھی نہ ہو
چمن دہر میں کلیوں کا تبسم بھی نہ ہو
یہ نہ ساقی ہو تو پھر مے بھی نہ ہو،خم بھی نہ ہو
بزم توحید بھی دنیا میں نہ ہو، تم بھی نہ ہو
خیمہ افلاک کا استادة اسی نام سے ہے
نبض ہستی تپش امادة اسی نام سے ہے
دشت میں، دامن کہسارمیں،میدان میں ہے
بحر میں، موج کی ا غوش میں،طوفان میں ہے
چین کے شہر، مراقش کے بیابان میں ہے
اور پوشیدة مسلمان کے ایمان میں ہے
چشم اقوام یہ نظارة ابد تک دیکھے
رفعت شان رفعنالک ذکرک دیکھے
کی محمد سے وفا تو نے تو ہم تیرے ہیں
یہ جہاں چیز ہے کیا، لوح و قلم تیرے ہیں
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Matt Raible
JavaScript MVC Frameworks are all the rage these days. They’ve taken the web development world by storm. This session explores the various features of the three hottest JavaScript MVC frameworks: AngularJS, Ember.js and React.js. It also compares client-side templating vs. server-side templating and how well each framework supports Isomorphic JavaScript (code that can run both client-side and server-side). Finally, it ranks each framework on 10 different criteria using Yevgeniy Brikman’s framework scorecard.
Video on InfoQ: https://www.infoq.com/presentations/comparing-angular-ember-react
Integrating React.js Into a PHP ApplicationAndrew Rota
React.js has taken the web development world by storm, and for good reason: React offers a declarative, component-oriented approach to building highly-scalable web UIs. But how can we take advantage of a JavaScript library like React in our server-side PHP applications. In this talk l cover the different ways React.js can be integrated into an existing PHP web application: from a client-side only approach to multiple techniques that support full server-side rendering with a Node.js server or PHP’s v8js. I also discuss the trade-offs in each of these designs and the challenges involved with adding React to a PHP site. Most importantly, I consider the higher-level issue of how to improve view cohesion across the client-server divide in a PHP application.
Presentation about the native browser way for building web components. We look at examples and the pros and cons of doing it natively and using a library. At the end we look at the Angular way of wrapping custom components into Custom Elements.
Custom Elements with Polymer Web Components #econfpsu16John Riviello
If you haven’t explored Web Components yet, you’re missing out on a powerful tool that can greatly enhance reusability of common web elements throughout your websites and web applications. As Comcast has been updating our web properties to unify under a single UX, using Web Components with Polymer has helped make that process much more efficient. In nearly 2 years while creating hundreds of our own custom elements, we’ve learned a lot about the benefits & drawbacks to Polymer along the way. This case study will introduce Polymer & Web Components, demonstrate when Polymer is useful, when other options should be considered, and what it takes to deploy Polymer components to millions of customers.
Your Angular app grew up and became too slow, so that you want to make it faster by implementing React framework.
How to do it? Is it worth it? What's the easiest way? What are pros and cons? You can derive all of that from this presentation.
(It may also be useful if you're just making a choice between these two frameworks.)
Getting to the Next Level with Eclipse Concierge - Jan Rellermeyer + Tim Verb...mfrancis
OSGi Community Event 2016 Presentation by Jan Rellermeyer (IBM), Tim Verbelen (imec) & Jochen Hiller (Deutsche Telekom AG)
Eclipse Concierge provides a clean, small and lightweight implementation of the OSGi core framework specification, specifically tailored to embedded systems and IoT. In this talk, we will cover how to use and deploy the Concierge OSGi framework (e.g. using OSGi enRoute), and discuss many of the new and upcoming features in the Concierge project such as the OSGi REST interface and Cloud Ecosystems reference implementations. We will also present our work in progress on implementing the OSGi R6 core specification level and novel demonstrations that illustrate the advantages of having a lean and streamlined OSGi implementation to deal with deployment and dynamism in IoT applications.
Javascript Frameworks Comparison - Angular, Knockout, Ember and BackboneDeepu S Nath
Introduction and Comparison of polpular JS Frameworks Knockout, Ember, Angular and Backbone. The presentation descrobes How and when to select each framework.
There are lots of libraries and frameworks you can use when building browser based JavaScript applications. Probably the most popular library is jQuery. But while jQuery makes it easy to write cross browser user interface code that manipulates the DOM it’s UI focus makes it less then perfect for large business applications. One of the JavaScript based MVC frameworks that has been gaining a lot of popularity for creating business applications is AngularJS. Wen using AngularJS you get the benefit of a powerful data-binding framework that guides you towards a proper application model with a proper separation between the UI layer and the business layer. It also contains a powerful dependency injection framework making code much more testable than before.
In this session Maurice de Beijer will show you how to get started with AngularJS and how productive you can be when creating line of business applications.
React native: building native iOS apps with javascriptPolidea
React-Native is Facebook's React based native application framework. You can write iOS applications using native Views and Controls, while the whole application logic is written in Javascript (the good parts of it in fact). Soon Android version will be released but for now we can build iOS apps with it.
AngularJS - Architecture decisionsin a large project Elad Hirsch
Architecture Decisions in a large project (Elad Hirsch, Web team Leader @ IDI)
At this session we will take practical road - look into IDI Full-Stack architecture, dive around the spec and explore the challenges developing a large scale web project.
Learn Developing REST API in Node.js using LoopBack FrameworkMarudi Subakti
This slide has been presented by me (Marudi Tri Subakti) on event Monthly Meetup Facebook Developer Circle Malang (devc-mlg-meetup-201703.splashthat.com) at 26th March 2017
[Note that this talk is not available outside some very specific settings but this deck is here for you as a basic resource to form a basis for your own analysis based on my reasonably objective extensive professional experience using both technology sets in the real world]
Java EE 7 has been one of the most significant overhauls of the platform. Just some of the changes include retiring EJB 2 entity beans and JAX-RPC, greater alignment with CDI, WebSocket/HTML 5 support, a standard API for JSON processing, the next version of JAX-RS, an overhaul of JMS, long-awaited concurrency utilities, batch processing in Java EE and much, much more. In order to make educated choices for adoption, one should understand how the widely-used Spring Framework aligns with Java EE.
This session will compare and contrast the Spring Framework with Java EE 7. We will focus on key areas that include the component development model, dependency injection, persistence, UI, REST, messaging, security and testing. Beyond API/features, the analysis will take a holistic view in covering concerns such as ease-of-use, manageability, ecosystem and vendor-neutrality.
On September 25th we hosted a webinar on “Step by Step AngularJS for beginners” for the Indian region and we’d like to share the presentation and recorded webinar with you now! In the webinar, we covered:
• Introduction to AngularJS
• Introduction to SPA
• Controller and $scope object
• Controller hierarchy
• Service and factory methods
• Routing
• CRUD operations in AngularJS application
And more!
Google Developer Group(GDG) DevFest Event 2012 Android talkImam Raza
This presentation is Imam Raza's tech talk on "Android" in Google Developer Group DevFest 2012 Event. In the event Mr. Imam Raza condemned recent blasphemy act of Google of not removing blasphemy video by saying "Shame on You". He also appreciated the efforts of minorities who stand with Muslim community on this issue.
He also read following Stanza from Allama Iqbal poem "Jawaab-e-Shikwa", in which Allah is answering to complains of Muslims to Him. In below stanza Allah is praising His prophet Mohammad (peace be upon him) and telling that this universe is made due His beloved prophet Mohammad (peace be upon him). In last part of stanza Allah tells Muslims that if they want to success in this world and there after then they have to make themselves loyal to Mohammad (peace be upon him).
ہو نہ یہ پھول تو بلبل کا ترنم بھی نہ ہو
چمن دہر میں کلیوں کا تبسم بھی نہ ہو
یہ نہ ساقی ہو تو پھر مے بھی نہ ہو،خم بھی نہ ہو
بزم توحید بھی دنیا میں نہ ہو، تم بھی نہ ہو
خیمہ افلاک کا استادة اسی نام سے ہے
نبض ہستی تپش امادة اسی نام سے ہے
دشت میں، دامن کہسارمیں،میدان میں ہے
بحر میں، موج کی ا غوش میں،طوفان میں ہے
چین کے شہر، مراقش کے بیابان میں ہے
اور پوشیدة مسلمان کے ایمان میں ہے
چشم اقوام یہ نظارة ابد تک دیکھے
رفعت شان رفعنالک ذکرک دیکھے
کی محمد سے وفا تو نے تو ہم تیرے ہیں
یہ جہاں چیز ہے کیا، لوح و قلم تیرے ہیں
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Matt Raible
JavaScript MVC Frameworks are all the rage these days. They’ve taken the web development world by storm. This session explores the various features of the three hottest JavaScript MVC frameworks: AngularJS, Ember.js and React.js. It also compares client-side templating vs. server-side templating and how well each framework supports Isomorphic JavaScript (code that can run both client-side and server-side). Finally, it ranks each framework on 10 different criteria using Yevgeniy Brikman’s framework scorecard.
Video on InfoQ: https://www.infoq.com/presentations/comparing-angular-ember-react
Integrating React.js Into a PHP ApplicationAndrew Rota
React.js has taken the web development world by storm, and for good reason: React offers a declarative, component-oriented approach to building highly-scalable web UIs. But how can we take advantage of a JavaScript library like React in our server-side PHP applications. In this talk l cover the different ways React.js can be integrated into an existing PHP web application: from a client-side only approach to multiple techniques that support full server-side rendering with a Node.js server or PHP’s v8js. I also discuss the trade-offs in each of these designs and the challenges involved with adding React to a PHP site. Most importantly, I consider the higher-level issue of how to improve view cohesion across the client-server divide in a PHP application.
Presentation about the native browser way for building web components. We look at examples and the pros and cons of doing it natively and using a library. At the end we look at the Angular way of wrapping custom components into Custom Elements.
Custom Elements with Polymer Web Components #econfpsu16John Riviello
If you haven’t explored Web Components yet, you’re missing out on a powerful tool that can greatly enhance reusability of common web elements throughout your websites and web applications. As Comcast has been updating our web properties to unify under a single UX, using Web Components with Polymer has helped make that process much more efficient. In nearly 2 years while creating hundreds of our own custom elements, we’ve learned a lot about the benefits & drawbacks to Polymer along the way. This case study will introduce Polymer & Web Components, demonstrate when Polymer is useful, when other options should be considered, and what it takes to deploy Polymer components to millions of customers.
Your Angular app grew up and became too slow, so that you want to make it faster by implementing React framework.
How to do it? Is it worth it? What's the easiest way? What are pros and cons? You can derive all of that from this presentation.
(It may also be useful if you're just making a choice between these two frameworks.)
Getting to the Next Level with Eclipse Concierge - Jan Rellermeyer + Tim Verb...mfrancis
OSGi Community Event 2016 Presentation by Jan Rellermeyer (IBM), Tim Verbelen (imec) & Jochen Hiller (Deutsche Telekom AG)
Eclipse Concierge provides a clean, small and lightweight implementation of the OSGi core framework specification, specifically tailored to embedded systems and IoT. In this talk, we will cover how to use and deploy the Concierge OSGi framework (e.g. using OSGi enRoute), and discuss many of the new and upcoming features in the Concierge project such as the OSGi REST interface and Cloud Ecosystems reference implementations. We will also present our work in progress on implementing the OSGi R6 core specification level and novel demonstrations that illustrate the advantages of having a lean and streamlined OSGi implementation to deal with deployment and dynamism in IoT applications.
Transaction Control – a Functional Approach to Modular Transaction Management...mfrancis
OSGi Community Event 2016 Presentation by Tim Ward (Paremus)
Transactions are a critical part of almost all Enterprise applications, but correctly managing those transactions isn’t always easy. This is particularly true in a dynamic, modular world where you need to be certain that everything is ready before you begin.
With the advent of lambda expressions and functional interfaces we now have new, better tools for defining transactional work. The OSGi Transaction Control service uses these functional programming techniques to scope transactions and resource access, providing control and flexibility while leaving business logic uncluttered. The resulting solution is decoupled, modular and requires no container magic at all, making testing and portability a breeze.
Background
Software controlled transactions have existed for a long time — commercial products that are still available now can trace their origins back to the 1960s. Since that time a lot has changed, first we saw the rise of C, then of Object Oriented programming, then of the Web, and now of Microservices.
Over the same time period there have been significant changes to the way that transactions are managed – either transaction boundaries have to be explicitly declared, or the management role is delegated to a container technology. Given the complexity of correctly managing the transaction lifecycle, container managed solutions are regarded as the gold standard, however container managed solutions introduce their own problems.
The rise of the Spring framework was a reaction to the complexity, and heavy-touch management of the original Java EE specifications. Instead Spring focussed on “pure POJO” programming, designed to make your code easily portable, runnable and testable inside or outside the container.
While Spring did a much better job of hiding complexity than those early Java EE servers, the fundamental problem with any pure declarative approach is that there must be a container somewhere. Without a container there is no code to start or end the transaction. Even now with Spring, EJB 3.2, CDI etc, the promise of simpler, container independent components is an illusion.
The big problem with declarative transaction management is that it tries to take away too much from the application code, replacing it with “container magic”. The problem with relying on magic is that the resulting system ends up being more complex, not less. We therefore should be aiming to simplify and minimise transaction management code, not eliminate it entirely. Java’s support for functional techniques opens a whole new set of API possibilities for transaction management, and the Apache Aries project has been exploring the possibilities of providing generic resource and transaction management in a concise, type-safe way. Examples from this project demonstrate how transaction management can be made both simple and explicit at the same time.
WebSockets and Equinox OSGi in a Servlet Container - Nedelcho Delchevmfrancis
OSGi Community Event 2016 Presentation by Nedelcho Delchev (SAP)
How to use WebSockets, coming as a standard feature with the modern Servlet Containers (e.g. Tomcat 7.x) from within the embedded Equinox OSGi environment deployed as a WAR application archive?
This talk will explain in details how to configure the classloaders and dependencies as well as how to create a websocket bridge for the internal OSGi plugins.
Going Native With The OSGi Service Layer - Sascha Zelzermfrancis
OSGi Community Event 2013 (http://www.osgi.org/CommunityEvent2013/Schedule)
ABSTRACT
OSGi is a dynamic module system for Java, supporting the development of highly modular applications. However, many concepts and design choices in the OSGi specifications are language neutral and can, for example, also be applied to native C++ application development. In fact, a vast amount of applications in many different domains (embedded, desktop, server, distributed, etc.) are still written in native languages like C++, for various reasons. In turn, many of these applications are in need of a light-weight modular architecture, fostering a service oriented design to minimize coupling between components and to maximize their re-usability.
The C++ Micro Services project (http://cppmicroservices.org) is a pure C++ implementation of the OSGi service layer, bringing a dynamic and service oriented framework inspired by OSGi to native application developers. Its scope is similar to the PojoSR project, a Java implementation of the OSGi service layer only. By only implementing the OSGi service layer, the complexity and foot-print of such an implementation is drastically reduced and its usage heavily simplified. Additionally, incrementally modifying an existing project to make use of the OSGi service layer can be viewed as an easy migration path to using a full-blown native OSGi implementation later on.
In this talk, the challenges of mapping the Java OSGi service layer API (based on OSGi R4.3 and Java generics) to an intuitive and easy-to-use C++ API are presented. Further, the properties of the native linkers of the major operating systems (Windows, Linux, MacOS) and how they effectively already implement parts of the OSGi module layer are discussed. These concepts will then be illustrated by looking at how a big C++ toolkit related to medical image processing makes use of the C++ Micro Services project and its OSGi-based service layer implementation. Furthermore, the relationship of the C++ Micro Services project to the recently initiated "Native OSGi" efforts, the related OSGi RFP 156, and other native OSGi implementations like Apache Celix will be discussed.
SPEAKER BIO
Sascha Zelzer studied Theoretical Physics in Austria and has been working with Java and C++ for the last ten years. While working on his Ph.D. at the German Cancer Research Center, he is also deeply involved in developing and maintaining a large C++ software stack primarily focused on medical imaging platforms. His current interests include modularized and distributed systems in C++, especially how to leverage the benefits of OSGi technology in a native environment.
This slides covers the programmatic and declarative way to handle services in the OSGi container. Spring DM, Blueprint Services and Declared Services are presented in an overview.
Dockerizing apps for the Deployment Platform of the Month with OSGi - David B...mfrancis
OSGi Community Event 2016 Presentation by David Bosschaert (Adobe) & Carsten Ziegeler (Adobe)
Docker is enjoying immense popularity today for deployment of nearly any type of app and new platforms that support Docker appear on a regular basis. While supporting Docker natively, many platforms have specific APIs to get them to work. As a dev you don’t want to lock yourself in to any of these. You want to keep the option open to switch to target platforms if the need arises. This talk outlines the OSGi Compute Management Service RFP 179 that abstracts over mechanisms to create and launch container nodes. It shows a system that allows you to swap Docker deployment platforms without the need to change your deployment management code. We’ll also talk about how OSGi Cloud Ecosystems RFC 183 can be used in this context for discovery of services, containers and frameworks.
OSGi Community Event 2016 Presentation by Balázs Zsoldos (Everit Kft.)
Have you ever felt that your system could collapse like the house of cards? Has it ever happened to you that an OSGi component got unsatisfied and that caused a chain reaction? It can be hard to find the root cause when you see 50+ non-active components. In this talk, we will show, how these issues can be solved quickly so programming can be fun again.
In the first part of the talk we will introduce our component model that is based on the concept of Declarative Services. There are minor changes, the ones that allow us to handle large set of component graphs easily.
In the second part
we will play a short game with the audience. One must cause a mistake in a large system while another developer (who did not see the change) must fix it.
there will be a demo where we set up a complex Servlet Container with multiple Servlet Contexts, Servlets, and Filters via configuration.
OSGi Community Event 2016 Presentation by Milen Dyankov (Liferay)
OSGi has evolved and matured beyond recognition over the last few years. It’s now easier than ever before, to build dynamic, modular Java applications to address the challenges imposed by ever growing and constantly changing business requirements. Despite that fact, OSGi seems to be far from receiving the appreciation it deserves. And if you are OSGi developer who now wanders “why should I care?”, let me remind you Thomas Edison’s famous quote “The value of an idea lies in the using of it”!
Growing large community around given technology has proven to be an essential part of its success. In this talk I’d like to go over what OSGi community is (not) doing to attract “outsiders”. I’d also argue it can do much better than that. Based on observations and conversation from the last 2 years trying to advocate for OSGi among Java developers. I’ll try to position the technology it today’s reality of microservices, containers, clouds, DevOps, automation, Java 9, … and bring to your attention the perspective of an “outsider” together with all the presumptions, fallacies and promises it comes with. Finally I’d like to share some ideas about how to address those, promote relevant parts of OSGi and thus perhaps make it more attractive to Java developers!
GeoServer an introduction for beginnersGeoSolutions
This presentation will provide an introduction to the GeoServer project and its abilities to publish data with a mix of well-known OGC protocols and other popular protocols and data formats.
Building Stuff for Fun and Profit - confessions from a life in code and cablesHolly Cummins
I love making stuff. I'm so happy that my job allows me to make stuff, and when I'm not at work, I'm making stuff anyway. Some of the stuff I've made has solved real technical and business problems; some of it I've done just to see if I can. In this talk I'll describe some of the valuable things I've built for my employer, IBM, and our clients - I'll also describe some of the ridiculous things I've made for myself.
These are slides for a talk given at BuildStuff Odessa, 2016 (http://www.buildstuff.com.ua/odessa/)
OSGi for European and Japanese smart cities - experiences and lessons learnt ...mfrancis
OSGi Community Event 2016 Presentation by Levent Gurgen (CEA)
Internet of Things (IoT) is the digital skin of the physical world. It has specific requirements such as dynamicity to self-adapt to the continuously changing physical context. The world is heterogeneous and the objects should interoperate to collaborate, thus interoperability is essential. Openness and short learning curve are other requirements so that innovators (e.g. startups) can rapidly build applications with reduced time-to-market and avoid vendor lock-in. Reuse of software and hardware is also particularly important since billion of devices are expected to be deployed in the coming decades and those devices should be multi-purpose and reusable by applications from different domains and not be specific to a given domain.
OSGi has – since 15 years ago – the answers to those requirements of today’s IoT. Its powerful run-time environment for the dynamicity, its service-oriented approach hiding heterogeneity, its modularity making the reuse extremely simple, and last but not least, its open approach giving the potential to democratize the IoT.
The talk will illustrate the benefits of OSGi for IoT with concrete deployed examples, in particular in smart city domain in Europe and Japan via the collaborative projects such as ClouT and FESTIVAL.
Whether you’re new to cloud computing or have been using various cloud services over the years, Azure Functions opens the door to new workflows for development, deployment, devops and scaling. Learn about how you can go serverless with Azure Functions using a web browser, code editor or a full blown IDE.
Jeff Scudder, Eric Bidelman
The number of APIs made available for Google products has exploded from a handful to a slew! Get
the big picture on what is possible with the APIs for everything from YouTube, to Spreadsheets, to
Search, to Translate. We'll go over a few tools to help you get started and the things these APIs share
in common. After this session picking up new Google APIs will be a snap.
Javascript and first-class citizenry: require.js & node.js
Javascript on web pages is ubiquitous and its problems are legendary. Javascript, seen as a second-class code citizen, is usually hacked together even by seasoned developers. New libraries (jQuery, prototype, backbone, knockout, underscore) and runtime tools (firebug, jasmine) look like they solve many problems - and they do. But they still leave poorly written code as just that. One key problem is that all javascript code lives globally and this results in poorly managed, tested and delivered code.
In this session, I will illustrate that we can treat javascript as a first-class citizen using with require.js and node.js: it can be modular, encapsulated and easily unit tested and added to continuous integration cycle. The dependencies between javascript modules can also be managed and packaged just like in C# and Java. In the end, we can resolve many javascript difficulties at compile time rather than waiting until runtime.
MongoDB Days Silicon Valley: Building Applications with the MEAN StackMongoDB
Presented by Jason Zucchetto, Curriculum Engineer, MongoDB
Experience level: Introductory
Walk through building a sample application with the MEAN stack (MongoDB-Express-Angular-Node.js). We'll start from the beginning, walking through every component of the MEAN stack, in building a modern web application. The presentation focuses on building MongoMart, a simple application for searching and viewing MongoDB merchandise. You'll walk away with a basic knowledge of MEAN stack components and how to leverage them in building applications.
From Backbone to Ember and Back(bone) Againjonknapp
As a software consultant, I get to see a lot of interesting code. In this particular instance a client was in the process of transforming their web application to a rich, interactive interface with the help of another company.
The project kicked off using Backbone and things were great. Until they were not great. Pages starting getting more and more involved and blame started being thrown at the technology choice.
A move to Ember.js ensued and the app was rewritten. But architecturally bad decisions don't hide long, and soon the rewrite was preforming even worse. That's when I stepped in, with the help of another consultant, to solve the performance issues once and for all. Our solution used Backbone.js and it was fast. This is that journey.
JavaScript front end performance optimizationsChris Love
No one wants a slow loading, slow reacting application. As page weight has increased so has the dependency on JavaScript to drive rich user experiences. Today many pages load over 2MBs of JavaScript, but is this healthy? Do your scripts and dependencies perform well? In this session we will review common JavaScript performance bottlenecks, how to detect them and how to eliminate them.
This session will review common bad coding syntax, architecture and how to replace them with better alternatives. You will also be exposed to caching, code organization, build and deployment best practices that produce the best user experiences. Finally, you will see how to use the navigation timing and performance timing APIs to fine tune your applications to produce a fast, lean application your customers will love.
Why and when you need end-to-end tests, a spooky story with a 15 years software beast, and how to develop concise, maintainable functional tests using Groovy, Spock and Geb.
An introduction to modern web technologies HTML5, including Offline, Storage, and Canvas Embedded JavaScript RESTful WebServices using MVC 3, jQuery, and JSON Going mobile with PhoneGap and HTML and CSS
Um agile Entwicklung sinnvoll in einem Projekt zu ermöglichen, spielt die Architektur des Systems eine entscheidende Rolle. In einem agilen Projekt sind Architektureigenschaften wie Installierbarkeit und Prüfbarkeit entscheidend, da die Software in kurzen Abständen regelmäßig geliefert und im besten Fall dem Endnutzer zur Verfügung gestellt wird. Diese kurzen Releasezyklen gelingen nur durch ein hohes Maß an Automatisierung. Agile Projekte benötigen bereits passende Lösungsansätze in der Architektur, die es erlauben eine Continous Delivery Pipeline möglichst einfach zu realisieren; das Architekturmuster „Microservices“ versucht u.A. diesen Anforderungen gerecht zu werden.
Weitere Vorteile des Architekturmusters ergeben sich bei der Skalierung von Projekten. Durch den Einsatz von „Microservices“ können Projekte einfach aufgeteilt und parallel von mehreren Cross-Functional Teams mit agilen Methoden umgesetzt werden.
Die Idee eines Microservice ist nicht neu: das System wird in kleine, losgelöste Anwendungen (sog. Microservices) aufgeteilt. Diese Bausteine stellen Ihre Funktionalität als Service zur Verfügung. Der Vortrag gibt einen Praxiseinblick, auf welche Weise man vom Einsatz des Architekturmusters „Microservice“ in einem agilen Projektumfeld profitieren kann. Es wird aufgezeigt, wo sich in der Praxis Schwierigkeiten ergeben und wie man diesen vorbeugen kann. Der gesamte Vortrag gibt einen grundlegenden Einblick in die agile Entwicklung auf Basis einer Microservice-Architektur.
OSGi and Spring Data for simple (Web) Application Development
1. OSGi and Spring Data
for simple (Web) Application
Development
Christian Baranowski
Content of my talk in a sentence
„Java development with Bndtools and bnd is so much fun!“
My Talk in three Words - „Bndtools is cool!“
2. Bndtools
Easy, powerful and productive way to develop
OSGi applications. Based on bnd and Eclipse.
http://bndtools.org/
„Development should be fun, so you need the right tools!“
3. enRoute
• Getting started with OSGi → enRoute project
http://enroute.osgi.org/
• The talk is based on the ideas from the enRoute blog demo
project
• enRoute OSGi blog sample project by Peter Kriens
https://github.com/osgi/osgi.enroute.blog/
• Step by step tutorial from Peter Kriens
http://goo.gl/Y569g5
• Last OSGi Code Camp (Ludwigsburg 2013) was based on this
step by step tutorial
4. Running Blog Example
OSGi Framework
(Equinox)
MySQL
…
HTTP Server
(Jetty)
JPA
(EclipseLink)
Web Browser
(IE, FF, Chrome, Safarie..)
HTTP / 80
simple.web.blog.web
simple.web.blog.data
MySQL JDBC / 3306
Web Layer
Persistence Layer
6. Spring Data Extender
register the dynamic implementation of the service
osgi.jpa.springdata
…
JPA-Repositories:
sample.webapp.data.BlogRepository
…
provider
MANIFEST.MF
Extender for JPA Repositories
public interface BlogRepository extends JpaRepository<Blog, Long> {
!
List<Blog> findByTitleContaining(String part);
!
}
consumer
@Entity
public class Blog {
@Id
@GeneratedValue
public Long id;
public String title;
public String content;
}
extender looks for bundles with "
JPA-Repositories headers
7. Simple Transaction Management
provider
Service
Registry
setup a proxy service with the transaction logic
@Reference(target = isTransactionalService)
public void setService(Service srv)
transactional.service = true requieres.tx.mgnt = true
consumer osgi.jpa.tx
Whiteboard for services which has a "
requires.tx.mgnt service property
Proxy "
Service
if (tx.isTransactionOpen()) {
return method.invoke(bundleContext.getService(serviceReference), args);
}
try {
tx.begin();
Object result = method.invoke(bundleContext.getService(serviceReference), args);
tx.commit();
return result;
} catch (Exception exp) {
tx.rollback();
throw exp;
} finally {
bundleContext.ungetService(txMgrServiceReference);
}
11. Handlebars Helpers
…
osgi.web.templates"
.handlebars.helpers
com.github.jknack.handlebars.Helper"
name = …
…Helper"
name=html-pagination
Whiteboard for
Helpers
…Helper"
name=html-table-content
<thead>
<th>#id</th><th>Title</th><th>Content</th><th></th>
</thead>
{{#html-table-content columns="id, title, content" resource="blog"}}
{{/html-table-content}}
osgi.web.templates"
.handlebars
org.glassfish.jersey.server.mvc.spi."
TemplateProcessor<String>
Whiteboard for "
JAX-RS Provides
osgi-jax-rs-connector
Extend templates and provide components for the HTML UI
12. Static Web Bundles
<html>
<head>
{{#resource type="css"}}
/css/app.css
{{/resource}}
</head>
OSGi way of web dependency management
for CSS or JavaScript frameworks
simple.web.blog.web osgi.web.bootstrap
MANIFEST.MF MANIFEST.MF
Require-Capability:
bootstrap.css;
filter:="(&(version>=3.1.1)(!(version>=4.0.0)))"
Provide-Capability:
bootstrap.css;
version:Version=3.1.1;
type=css
@Requieres.Bootstrap
@Component
@Path("/products")
public class BlogController
More details see
aQute.bnd.annotation.headers.RequireCapability"
or"
aQute.bnd.annotation.headers.ProvideCapability!
bnd annotations.
13. Modern Web Applications
HTTP / 8080
REST Resource (API)"
JSON
UI
business logic"
data access logic
HTML5"
JavaScript (CoffeScript, …)"
CSS3 (SASS, LESS, ..)
JAVA 8"
OSGi
14. Web Bundle build with Yeoman Grunt Bower
yeoman Grunt bower
• Scaffolding tool for webapps"
• Yeoman helps kickstart new projects"
• provide a generator ecosystem
http://yeoman.io/
• JavaScript Task Runner "
• Grunt ecosystem is huge"
• minification, compilation, unit
testing, linting, …
http://gruntjs.com/
• package manager for the web"
• solution to the problem of front-end
package management"
• ecosystem is huge
http://bower.io/
Thats the tool chain web developers love…
15. Building Web Applications
HTTP / 8080
REST Resource (API)"
JSON
UI
business logic"
data access logic
HTML5"
JavaScript (CoffeScript, …)"
CSS3 (SASS, LESS, ..)
JAVA 8"
OSGi
yeomen, grunt, bower
bndtools
Gradle, tests and builds the OSGi and the Web application
Web Developers
Java Developers (OSGi)
16. AngularJS REST Consumer (Client)
$blogResource (REST Consumer)
!
angular.module('blogApp')
.factory('$blogResource', ['$resource', function($resource) {
return $resource( '/rest/blog/:postId', { postId: '@postId' }, { });
}]);
MainCtrl (the controller is using the REST resource to delete a blog entry)
angular.module('blogApp')
.controller('MainCtrl', ['$scope','$blogResource', function($scope, $blogResource) {
$scope.posts = $blogResource.query();
$scope.deletePost = function(post) {
$blogResource.delete({postId: post.id}).$promise.then(function() {
$scope.posts = $blogResource.query();
});
};
}]);
17. REST Resource (JAX-RS) Provider
@Component
@Path("/rest/blog")
public class BlogResource implements Resource {
!
BlogRepository blogRepository;
!
@Reference(target = isTransactionalService)
public void setBlogRepository(BlogRepository blogRepository) { … }
@GET
public List<Blog> query() { return blogRepository.findAll(); }
@GET
@Path("/{id}")
public Blog get(@PathParam("id") Long id) { return blogRepository.getOne(id); }
@POST
public void post(Blog blog) { blogRepository.save(blog); }
@DELETE
@Path("/{id}")
public void delete(@PathParam("id") Long id) { blogRepository.delete(id); }
}
A REST Resource build in standard and flexible way based on JAX-RS
19. Testing AngularJS Controllers
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope, $injector) {
scope = $rootScope.$new();
$httpBackend = $injector.get('$httpBackend');
$httpBackend.expect('GET', '/rest/blog').respond([{id: 1}, {id: 42}]);
MainCtrl = $controller('MainCtrl', {
$scope: scope
});
}));
it('should send a request to delete a blog post', function () {
$httpBackend.expect('DELETE', '/rest/blog/42').respond(200, 'success');
$httpBackend.expect('GET', '/rest/blog').respond([{id: 1}]);
scope.deletePost({id: 42});
$httpBackend.flush();
expect(scope.posts.toString()).toBe([{id: 1}].toString());
});
20. Technologie Stack
• Modern Web-Application OSGi Stack
• AngularJS (Superheroic JavaScript Framework)
https://angularjs.org/
• Jetty (Web Server)
https://www.eclipse.org/jetty/
• osgi-jax-rs-connector (Jersey)
https://github.com/hstaudacher/osgi-jax-rs-connector
• Spring Data JPA (for simple JPA Services)
http://projects.spring.io/spring-data-jpa/
• Spock (testing and specification framework)
https://code.google.com/p/spock/
• Eclipse Equinox or Apache Felix as powerful OSGi Framework
21. Feedback
„Erik Meijer:
Are you saying you cannot write large programs in Java?
Anders Hejlsberg:
No, you can write large programs in Java.
You just can’t maintain them. „
Quelle - http://t.co/Uw2iglqf
Compose small “applications” (modules)
in to large systems.
Quelle - http://t.co/Uw2iglqf
22. Resources
• OSGi Simple Blog App (Source, Slides)
https://github.com/tux2323/simple.web.blog