"We have changed our views on OSGi over the years, and one of the
reasons for that is that OSGi simply cannot be made as easy to use and
as productive as we feel is consistent with Spring values."
"Niche"
You know, I'm seeing a failed in those attempts. Hope isn't much better for Jigsaw but....
Ok, now why the failures. Well, my real world experience with some of what OSGi is trying to achieve is simple combinatorial complexity that just naturally comes with dependency management. Unless this problem can be tooled (and even then), the whole thing grows beyond a humans ability to manage it. Many systems we are building today are just way too complex for this extra level of complexity.
Did I mention OSGi breaks the already broken Java classloading system? Must see talk, "Do you really get classloaders" by Jevgeni Kobanov, the Zero Turn-around guy. I'd swear he knows more about classloading than the JDK guys that devised the evil scheme we all face today (I know for sure that they consider him a PITA :-)). Is OSGi classloading any better? Hard to say. Does it solve any of the current classloading issues? My answer is none that I know of (correct me if I'm wrong). Does it create issues of it's own? Yup, just had fun with Resin, OSGi and a profiler that kept breaking. Visibility was an issue! Java packaging is already hard enough, seriously, do we really need to make it any harder?
Regards,
Kirk
> --
> You received this message because you are subscribed to the Google Groups "The Java Posse" group.
> To post to this group, send email to java...@googlegroups.com.
> To unsubscribe from this group, send email to javaposse+...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.
>
OSGi *is* tricky to get right, that much is true.But... You need the right tools to get there, and it would seem that Spring simply doesn't have what it takes, that's hardly OSGi's fault though!
Have a talk from OSGi & Eclipse specialist Neil Bartlett at JavaWUG, it's rather good. He explains matters more clearly than I could:
Yes, module system have got problems with the classloaders. But as far
as I see with the NetBeans Platform, they can managed. I think that the
more complex an application is, the higher the need for a module system
is. Take Hudson/Jeskins, for instance. At the beginning it was a piece
of cake to use and upgrade. Since more than one year every update
experience is a pain in the ass, because some plugin breaks. As far as I
understand, the Hudson/Jeskins plugins are versioned, but there's no
compatibility enforcing facility that could prevent me from installing
an incompatible plugin (and if there is such a facility, well it's
broken as I just upgraded Hudson and a plugin broke).
I can't imagine how to build an application with the complexity of
Eclipse or NetBeans or JDeveloper without a module system with enforced
versioning.
--
Fabrizio Giudici - Java Architect, Project Manager
Tidalwave s.a.s. - "We make Java work. Everywhere."
java.net/blog/fabriziogiudici - www.tidalwave.it/people
Fabrizio...@tidalwave.it
Perhaps you could build an application with that level of
functionality but not complexity then.
*looking at IDEA*
On one of the point items I have to agree with the Posse -- if you get
to the point where you want different versions of the same library being
loaded at the same time, then that's generally a sign that your overall
dependency management has gotten out of control or that some modules are
not being adequately maintained. Sure, in some rare cases such a need
will occur, I've seen it -- but I'd be loathe to add complexity to >98%
of development for the <2% problem.
and easier, less risky approach is to use dependency injection enforce
your module breakouts with a decent build system (gradle). This gets
you most of the way w/o out all the tooling and testing headaches.
> --
> You received this message because you are subscribed to the Google Groups
> "The Java Posse" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/javaposse/-/lM-SRAw0jssJ.