Hi All,
I am working on refactoring carbon-orbit bundles in the trunk with the
intention of reducing the size of bulky bundles.
As I went through some of the bundles, I found out few issues which make
bundles unnecessarily bulky. The issues I identified include the following;
1. Unused jars embedded as dependencies in the bundle
2. Duplicated classes due to exploded jars (as a result of exported
packages form the bundle) and embedded dependencies
The refactoring process I followed include the following steps.
1. Listing the orbit bundles in descending order of size to identify
bulky bundles
2. Scanning the bundle for unused jars as embedded dependencies and
duplicated classes in the bundle class-path: I used a tool called *JBoss
Tattletale 1.1.2* [1] to find unused, duplicated jars in the bundle
class-path
3. Removing unused embedded dependency jars from the pom.xml and
including bundle resources(.js, .swf, .xml files) in correct directory
structure
4. Testing the bundle in a Product via the carbon OSGI console. (To test
the bundles I used wso2gs-1.3.1 SNAPSHOT)
I tested the first 5 bundles in descending order of size and re-factored the
following bundles to reduce their size.
Bundle
Prev. size
New size
What I did
shindig-3.0.0
13.3 MB
10.9 MB
Removed unused embedded dependencies: jstl-1.2, htmlunit-2.8,
aopalliance-1.0
Removed shindig-common, extras, gadgets, social-api and included their
resources in the bundle class-path
axis2_1.6.1
8.2 MB
6.1 MB
Removed unused embedded dependency xmlbeans-2.3.0
apacheds_1.5.7
7.2 MB
6.7 MB
Removed unused embedded dependencies: shared-dsml-parser,
shared-ldap-constants, shared-ldap-converter, apacheds-core-annotations,
apacheds-interceptor-kerberos, apacheds-protocol-changepw,
apacheds-protocol-dhcp, apacheds-protocol-dns, apacheds-protocol-ntp,
apacheds-server-annotations, apacheds-server-jndi,
apacheds-server-replication, apacheds-i18n
I think this process can be used effectively when creating an orbit bundle
by removing unused dependencies, duplicated jars etc, to make it as light as
possible.
[1] JBoss Tattletale:http://www.jboss.org/tattletale
Tattletale gives a report on the project class-path and gives useful
information about unused jars, duplicated jars, transient dependencies etc.
It can be invoked as a third-party jar or as a maven plugin to generate the
report. I can recommend this tool as a testing tool for developers creating
orbit-bundles.
Thanks,
Dileepa
--
Dileepa Jayakody,
Software Engineer, WSO2 Inc.
Lean . Enterprise . Middleware
_______________________________________________
Carbon-dev mailing list
[email protected]
http://mail.wso2.org/cgi-bin/mailman/listinfo/carbon-dev