cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nukul Bhasin <nbha...@rim.com>
Subject Re: [plugins] Static or Dynamic Libraries
Date Fri, 22 Feb 2013 18:47:03 GMT
Hi Michael,

Thanks for raising this. We went through this exact question on BlackBerry
10 WebWorks SDK last year and eventually made the decision to pre-compile
plugins.

>> - For each platform, how feasible is this?

BlackBerry 10 is unique in its nature of plugins, as in the Framework
(non-plugin code) itself is all JavaScript and does not need to be
compiled but the plugins might contain native (C/C++) code. This means
that even though the developer does not need to compile the framework they
would have to compile the plugins. So the choice for BlackBerry 10 was
obvious, the plugins are indeed compiled into libraries that are then
loaded at runtime.
This obviously provides the benefit of simplicity to the end user, who
does not need to compile the native code.

On older BlackBerry and Playbook platforms this is also feasible as
library loading is supported by both Java and ActionScript, although it
might be slow on Java (will need prototyping)

>> - What problems (or other benefits) would exist with plugins as
>>libraries?

We also added a feature where we only load the library when an API is used
the first time. This reduces memory consumption at launch of the
application reducing startup time for the application. Obviously if your
API is time sensitive it should be loaded at startup. I imagine this is a
major benefit that can probably be achieved by other platforms as well.


BlackBerry 10 WebWorks SDK received a lot of Kudos from our developers for
reducing dependencies and time when building their application. I can
imagine similar benefits of decreasing build time (might be minimal
though) can be achieved on other platforms even though reducing build time
dependencies might not be feasible for all platforms.

We are yet to observe any negative impact of this approach.


Obviously these benefits are automatically carried over to the BlackBerry
10 implementation of Cordova as well.


Nukul Bhasin
Team Lead, BlackBerry WebWorks
Tel: 289 261 5574
Research in Motion Limited





On 2/22/13 12:29 PM, "Michael Brooks" <michael@michaelbrooks.ca> wrote:

>Hi all,
>
>I'd like to pick your brain around the feasibility of plugins existing as
>static or dynamic libraries.
>
>I had this idea a few years ago, when we first started discussing plugins.
>At the time, it was
>possible on BlackBerry and, with some work, possible on Android and iOS.
>However, a lot
>has changed in the last few years, so I'd like to revisit the topic.
>
>Overview:
>
>- A plugin developer would compile their plugin as a static or dynamic
>library.
>- A plugin developer would publish their plugin as the library.
>- An app developer would install the static or dynamic library.
>
>Benefits:
>
>- The plugin is only compiled by the author who distributes it.
>    - For complex plugins, this may help avoid compile-time errors around
>dependencies.
>- The plugin may be able to bundle some of its assets, simplifying the
>installation process.
>- Can be an alternative (not replacement) to distributing plugins as
>source-code.
>
>Questions:
>
>- For each platform, how feasible is this?
>- What problems (or other benefits) would exist with plugins as libraries?
>
>Thanks!
>Michael


---------------------------------------------------------------------
This transmission (including any attachments) may contain confidential information, privileged
material (including material protected by the solicitor-client or other applicable privileges),
or constitute non-public information. Any use of this information by anyone other than the
intended recipient is prohibited. If you have received this transmission in error, please
immediately reply to the sender and delete this information from your system. Use, dissemination,
distribution, or reproduction of this transmission by unintended recipients is not authorized
and may be unlawful.

Mime
View raw message