NetbinoxPerformance

From APIDesign

(Difference between revisions)
Jump to: navigation, search
(It's Getting Faster!)
(It's Getting Faster!)
Line 5: Line 5:
===== It's Getting Faster! =====
===== It's Getting Faster! =====
-
I am glad to report that recently we improved [[Netbinox]] so much that our testing application (together with some parts of [[NetBeans]]) starts faster than in [[Equinox]] itself.
+
I am glad to report that recently we improved [[Netbinox]] so much that [[JDeveloper]]our testing application (together with some parts of [[NetBeans]]) starts faster than in [[Equinox]] itself.
* [[Equinox]] version needs '''19.8s'''
* [[Equinox]] version needs '''19.8s'''
* [[Netbinox]] version needs just '''17.5s'''
* [[Netbinox]] version needs just '''17.5s'''
-
Moreover this is just a toy application with a few [[JAR]]s, but when you imagine really large apps, the benefits of our [[netbeans:StartupCache|startup cache]] will be even more visible. Have a look at [http://source.apidesign.org/hg/netbinox our sources], if you are not afraid of their [[GPL]] license!
+
Moreover this is just a toy application with a few [[JAR]]s, but when you imagine really large app like [[JDeveloper]], the benefits of our [[netbeans:StartupCache|startup cache]] will is even more visible.
Also, we will continue to optimize our system. Right now we are waisting ~5s somewhere soon in the initialization sequence, so the optimal time shall be even better. We are looking towards 30% more efficiency than [[Equinox]]!
Also, we will continue to optimize our system. Right now we are waisting ~5s somewhere soon in the initialization sequence, so the optimal time shall be even better. We are looking towards 30% more efficiency than [[Equinox]]!
-
One question for the [[OSGi]] gurus however: How can I install a bundle into the container without the [[Equinox]] or [[Felix]] copying the content of my [[JAR]] into their own caches?
+
One question for the [[OSGi]] gurus however: How can I install a bundle into the container without the [[Equinox]] or [[Felix]] copying the content of my [[JAR]] into their own caches? I've got the answer (thanks): use [[MagicalStrings]]!
<comments/>
<comments/>

Revision as of 08:48, 1 September 2011

Performance has been my main focus during few recent years. I was member of NetBeans performance team and among other improvements we managed to speed the NetBeans start time from 60s to less than 20s. This has been achieved primarily by eliminating I/O operations which are quite slow when the application starts for the first time. An important piece of the whole picture is also the startup cache which eliminates the need to open JAR files during first start. As a result the NetBeans platform become the fastest starting up modular application framework in Java.

During our work on NetBeans 6.9 we decided to provide smooth support for OSGi. We started with the Netigso project - a general infrastructure to plug an OSGi compliant container into NetBeans runtime. We also created a subproject called Netbinox to specifically use Equinox container. The whole system has been working quite fine for a few months (if you need desktop, Swing and OSGi, don't hesitate to try), but only recently we focused our attention to performance. We wanted to give the OSGi application the same performance boost we have for NetBeans modules.

It's Getting Faster!

I am glad to report that recently we improved Netbinox so much that JDeveloperour testing application (together with some parts of NetBeans) starts faster than in Equinox itself.

Moreover this is just a toy application with a few JARs, but when you imagine really large app like JDeveloper, the benefits of our startup cache will is even more visible.

Also, we will continue to optimize our system. Right now we are waisting ~5s somewhere soon in the initialization sequence, so the optimal time shall be even better. We are looking towards 30% more efficiency than Equinox!

One question for the OSGi gurus however: How can I install a bundle into the container without the Equinox or Felix copying the content of my JAR into their own caches? I've got the answer (thanks): use MagicalStrings!

<comments/>

Personal tools
buy