In above replace "modular" and "un-modular" with "dynamic", "not-dynamic".

- Ray

On Fri, Mar 11, 2016 at 11:23 AM, Raymond Auge <raymond.a...@liferay.com>
wrote:

> You'll never be able to take for granted that un-modular code can easily
> be massaged to modular code.
>
> This goes for Java modules which won't have been designed with dynamicity
> in mind... which will be all java modules built by the JVM team and
> everyone who doesn't take dynamicity to heart.
>
> The only approach that will be completely safe will be to use java modules
> on the module path and then take an approach like Neil's to "dynamically"
> generate a view of the world presented to an OSGi runtime which reflects
> that.
>
> Putting any random java module into an OSGi runtime will incur the same
> risk and/or techniques used to put non-osgi artifacts into osgi:
>
> 1) turn it an osgi bundle (risky, but we all do it sometimes and it _can_
> work)
> 2) embed it in another osgi bundle (also risky, can also work with
> sometimes less pain than 1, but less benefits also)
>
> But note that both of these approaches NEVER come without risk. If you
> can't figure out a way to satisfy the un-modular code inside there's really
> nothing you can do about it.
>
> As Peter stated in his response, Jigsaw is NOT about dynamicity. OSGi is
> _totally_ about dynamicity so you can barely compare them to each other.
> You can pretty much only compare them on the packaging front and that's
> about it.
>
> Sincerely,
> - Ray
>
> On Fri, Mar 11, 2016 at 10:50 AM, Milen Dyankov <milendyan...@gmail.com>
> wrote:
>
>> Thank you very much Peter,
>>
>> in fact I'm fully aware and I totally agree with your point of view (to
>> the point I have actually quoted you a number of times in the past). My
>> question however was a bit different and perhaps I didn't make myself clear
>> enough. It's not about should one use Java modules instead of OSGi or
>> compare the two. It's more reflecting the fact that Oracle is recently
>> trying hard to promote jigsaw as the right way to "architect an
>> application" :)  Regardless how accurate that statement is, there will
>> be people that will choose to release their libraries as java modules only
>> and not OSGi bundles. Adding to that the fact that core JVM features are
>> java modules an important question seems to arise. Namely how to make use
>> of those in OSGi application. For example, let's say I have a OSGi bundle
>> that needs module X (that being either Java native module ot 3rd party only
>> available as such) and one wants to be able to dynamically install and
>> remove the bundle as needed. Would that mean that one will have to always
>> start java with module X on the module path? Or perhaps restart Java every
>> time a bundle is added to also add the java module? Needles to say this is
>> not what a OSGi developer would like. The other option I can imagine is to
>> make OSGi dynamically load java modules. To my understanding this is what
>> core Java engineers expect JavaEE to do by making use of layers
>> functionality. So I was wandering if OSGi Alliance’s plans go in that
>> direction? Also in this sense I disagree with the statement that if one
>> writes code properly it should work on Java 42. That would be the case if
>> Java was not introducing backward incompatible architectural changes. I'm
>> aware that for Java 9 one can still ignore modules and put everything on
>> "good" old classpath but then again this as well may change in the future.
>>
>> Regards,
>> Milen
>>
>>
>>
>>
>>
>> On Fri, Mar 11, 2016 at 3:09 PM, Peter Kriens <peter.kri...@aqute.biz>
>> wrote:
>>
>>> I think the scope of OSGi is quite different from the scope of Jigsaw.
>>> Jigsaw is oriented towards the VM’s modularity to minimize the footprint
>>> and incrementally load the VM, OSGi is about how to architect an
>>> application.
>>>
>>> Jigsaw OSGi  Difference
>>> module bundle Jigsaw modules are too closed for third parties that need
>>> access to classes, e.g. a CDI provider
>>> packages packages OSGi uses  an advanced package wiring model with
>>> extensive checks (uses constraints), Jigsaw’s is quite primitive and not
>>> supporting multiple version
>>> serviceloader service Jigsaw is about classes, OSGi is about
>>> (configured) instances
>>>
>>> The major difference is that the Jigsaw modules are as minimal as it
>>> gets. In OSGi, the bundle model enables the extender pattern. A pattern
>>> where a bundle provides functionality based on another bundle’s content.
>>> Again, for example a CDI like mechanism as OSGi’s Declarative Services.
>>> Similar for services. Jigsaw provides the class loader hack they call
>>> Service Loader that only provides access to a service class. OSGi provides
>>> access to service instances, which is MUCH more modular, flexible, easier,
>>> and more powerful in all aspects.
>>>
>>> The recent history in Jigsaw is excellent for OSGi because it clearly
>>> demonstrates that what OSGi was blamed for is actually too often a problem
>>> inherent in modularity. Modularity is about fencing your code. However,
>>> fencing your code is trivial. Just like security, a perfectly secure device
>>> is trivially to make. However, it is not useful because it won’t do
>>> anything. If you do not provide ‘holes’ then nothing can get executed. In
>>> Jigsaw they clearly were missing some of the necessary holes to make even
>>> the most simple Java program work. A helper like CDI could not work because
>>> it could not get access to the classes (and thus) annotations of another
>>> module. (Might have changed since I looked.) In practice this is worse,
>>> since any class loading hack in the Java universe (and that is a lot of
>>> hacks) will fail with the current Jigsaw module design. We’ve been blamed
>>> for these fails but it is clear that it is not OSGi. Jigsaw is now going
>>> through the process where they have to design the required holes without
>>> throwing away the benefits of modularity. However, it will also become
>>> clear that many of the ubiquitous  Java class loading hacks are
>>> fundamentally problematic. It will be interestingly to see how long it will
>>> take to come with a solution for this, and what that solution is going to
>>> look like. Will they do it right (which breaks a LOT of existing code, as
>>> we did) or buckle and throw away the benefits of modularity? Whatever
>>> happens, I am pretty sure we will be vindicated
>>>
>>> Taking a step back. The essence of modularity is “not knowing”. The more
>>> ignorant your code is to more places where it can live. It is all about
>>> high cohesiveness and low coupling. If there is one thing I’m pretty
>>> satisfied with in the OSGi is the fact that we’ve made that message quite
>>> clear, the OSGi specifications are very alone at the top with respect to
>>> these principles. The Java 9 dilemma you sketch is a perfect illustration
>>> of these principles. The litmus test is really what happens when Java 9 (or
>>> 10) will provide new useful features. Do you have to change your bundles to
>>> leverage them or can they be leveraged without any effort on your side? I
>>> think that bundles that leveraged the cohesion and coupling lessons we’ve
>>> taught will give you a resounding yes. And I think Neil showed that once
>>> Jigsaw provides useful features we can leverage those features (like the
>>> extra protection level) without you having to change your code.
>>>
>>> I am not the official OSGi voice. However, I’ve been influential in the
>>> past. I will do my utmost to leverage Java 9 (or 10, or 11, or 99) where it
>>> makes sense. We are part of the Java eco system and we must leverage what
>>> is out there as long as it makes technical sense.
>>>
>>> So what to do? Well,you asked a biased person :-) Use OSGi to the hilt,
>>> as we show in OSGi enRoute. Write your code in a no-compromise way: OSGi
>>> services everywhere. I am pretty confident then that you code will run on
>>> Java 42 AND leverage the oh so cool features of Java 42 when possible.
>>>
>>> Kind regards,
>>>
>>> Peter Kriens
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> On 11 mrt. 2016, at 13:44, Milen Dyankov <milendyan...@gmail.com> wrote:
>>>
>>> Hello,
>>>
>>> can someone please point me to some resource that describes the plans
>>> for OSGi / JSR 276 interoperability?
>>>
>>> I'm sorry if this has been already discussed here, I just joined the
>>> list after trying without success to search through archives. I was also
>>> pretty sure it would be easy to find this information online but it seams
>>> it's either not available or I don't know how to find it.
>>>
>>> To put some more context to my question, at the moment I'm interested to
>>> know how people who make decisions about OSGi's future, would describes the
>>> general approach of building applications with Java9 and OSGi, rather than
>>> discuss deep technical details.
>>>
>>> It seams to me that Penrose project is inactive (judging by source code
>>> and mailing list activities) from around 2012/2013. Not that I'm very
>>> familiar with it, but IIRC it was supposed to provide that
>>> interoperability. From what I can tell, there is no much interest (if at
>>> all) in this subject from the Java platform engineers. So, assuming Java 9
>>> will be released soon (let's just say 2017 is soon enough for long term
>>> planning) what will be the recommended way to run OSGi on top of it? Would
>>> one just continue to use classpath and ignore modulepath? If not, then are
>>> there any plans for future versions of OSGi to allow to dynamically load
>>> java modules? Will bundles need to be converted to java modules (perhaps
>>> automatically behind the scenes) or vice versa?
>>>
>>> I would really appreciate it, if someone can share a vision of how would
>>> one build applications with Java 9 and OSGi in the foreseeable future.
>>>
>>> Thank you,
>>> Milen
>>>
>>> --
>>> http://about.me/milen
>>> _______________________________________________
>>> OSGi Developer Mail List
>>> osgi-dev@mail.osgi.org
>>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>>
>>>
>>>
>>> _______________________________________________
>>> OSGi Developer Mail List
>>> osgi-dev@mail.osgi.org
>>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>>
>>
>>
>>
>> --
>> http://about.me/milen
>>
>> _______________________________________________
>> OSGi Developer Mail List
>> osgi-dev@mail.osgi.org
>> https://mail.osgi.org/mailman/listinfo/osgi-dev
>>
>
>
>
> --
> *Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
>  (@rotty3000)
> Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
>  (@Liferay)
> Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org>
> (@OSGiAlliance)
>



-- 
*Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
 (@rotty3000)
Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
 (@Liferay)
Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org> (@OSGiAlliance)
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to