[jsword-devel] feather request: book downloading and index generating api

P. R. B. dysbiote at yahoo.com
Sat Dec 9 18:51:56 MST 2006


My RCP application takes up 14 MB. My plugins and the JSword plugin
take up ~800KB. JSword dependencies take up ~1MB. The rest is made up of RCP core
plugins or RCP ancillary plugins on which my plugins depend. 



RCP doesn't trim down very well (save the 3MB that Gabriel mentioned), but I think that's a fair price for the flexibility and functionality that it provides. 

----- Original Message ----
From: Zhaojun Li <lzj369 at gmail.com>
To: J-Sword Developers Mailing List <jsword-devel at crosswire.org>
Sent: Saturday, December 9, 2006 2:10:39 PM
Subject: Re: [jsword-devel] feather request: book downloading and index generating api

Peter, 

 I would say the final size would be 12 mb. Of course it may be able to be compressed a little bit.

I would suggest that No change for DB itself except that we provide a new plugin project for people who ever want to do RCP work. It will be like a jar file.  This project is a nice to have one. 

I appreciate   DM's offering for a place to collaborate .  Like Apache, we can make it an incubator project.  




On 12/9/06, Peter von Kaehne
 <refdoc at gmx.net> wrote:I can honestly say the discussion you juts had on this thread is way above my head.


That said, may I please urge caution - a 9mb download requires a broadband connection, a lot of people though do not have these yet - particularly a lot of those Crosswire is aimed at.

Unless - and I do not understand this - there is a serious gain in functionality, is this a good way to go?


Peter

-------- Original-Nachricht --------
Datum:  Sat, 9 Dec 2006 12:32:21 -0500
Von: "Zhaojun Li" <lzj369 at gmail.com>
An: "J-Sword Developers Mailing List" <
jsword-devel at crosswire.org>
Betreff:  Re: [jsword-devel] feather request: book downloading and index        generating api

> For RCP, it will be a set of plugins,.For a library purpose for third

> party
> to use, it should be a plugin project with jsword and common jar and
> expose
> all the packages to downstream plugin jars that use it.
>
> We need to discuss it before nail it down.

>
> On 12/9/06, P. R. B. <dysbiote at yahoo.com> wrote:
> >
> > Do you mean in an Eclipse sense, like New -> Project... -> Java Project,
> > or conceptually? Eclipse-wise, the way that's worked best for me is to

> have
> > several Java plug-in projects that compose the RCP application, similar
> to
> > how BibleDesktop is composed of projects bibledesktop, commons-swing,
> > commons, etc. I'm not sure if that helps answer your question or not.

> >
> > ----- Original Message ----
> > From: DM Smith <dmsmith555 at yahoo.com>
> > To: J-Sword Developers Mailing List <
jsword-devel at crosswire.org>
> > Sent: Saturday, December 9, 2006 8:47:23 AM
> > Subject: Re: [jsword-devel] feather request: book downloading and index
> > generating api
> >

> > One question, should it be a "java project" or a "java plugin project" ?
> > On Dec 9, 2006, at 8:41 AM, DM Smith wrote:
> >
> > I'll see about setting up a jsword-rcp Eclipse project and get the

> > permissions wide open. We can use this to collaborate.
> > On Dec 9, 2006, at 1:44 AM, Zhaojun Li wrote:
> >
> > My last post before I fall asleep :)
> >
> > Let us do not worry code efficency or naming standard and such and such.

> > At least we have a start point. We can always refactor and tune the apis
> > later.
> >
> > Right now, the most import thing is to get started.
> >
> > God Bless!

> >
> > On 12/9/06, P. R. B. <dysbiote at yahoo.com> wrote:
> > >
> > > Hi Zhaojun,
> > >
> > > I'll work on making the jsword plugin available this weekend. In

> > > general, I had two purposes when writing the plugin: to use RCP
> classes in
> > > place of JSword classes whenever I felt it was appropriate (e.g.
> > > preferring IProgressMonitor over JSword Job and RCP extension points

> over
> > > properties files), and expose only the essential packages to the
> clients.
> > >
> > > Don't worry about me being burned out. =) Most of that had to do with

> > > trying to write the thing myself in a short period of time through
> long
> > > nights, and making the project self-serving / ego-driven rather than
> > > God-serving. That's my confession. I think there's a lot we can do

> with it
> > > together if we're patient.
> > >
> > > As to your previous e-mail: Having multiple GUIs may be a good idea.
> One
> > > of the strengths of BibleDesktop is its smaller footprint and

> compatibility.
> > > The desktop application I wrote is focused on functionality /
> usability (
> > > e.g. listing the commentaries and dictionaries that reference a
> > > highlighted verse) at the cost of depending on the RCP framework and

> being
> > > fairly CPU intensive for some operations. There'd be less concern
> about
> > > applications having overlapping functionality or overlapping target
> audience
> > > if we keep the GUIs in separate niches, yet we'd still be pushing to

> keep
> > > the core flexible and simple.
> > >
> > > Be sure to keep all of this in your prayers. If we keep God at the
> > > center of this, I believe He'll lead us to something good.

> > >
> > > Good night, all.
> > > -Phillip
> > >
> > >
> > > ----- Original Message ----
> > > From: Zhaojun Li < 
lzj369 at gmail.com>
> > > To: J-Sword Developers Mailing List <jsword-devel at crosswire.org>
> > > Sent: Friday, December 8, 2006 11:51:59 PM

> > > Subject: Re: [jsword-devel] feather request: book downloading and
> index
> > > generating api
> > >
> > > Philip,
> > >
> > > I don't konw OSGi good enough either. However, guys in the street tell

> > > me it is cool.
> > >
> > > I think a standard ant build to create a plugin jar is good enough for
> > > now. With your effort, I think we are in a good position now.  Since

> you are
> > > burned out, :) , I can take over your GUI and maintain mine too. After
> all,
> > > it is not very hard for this part.
> > >
> > > Since you did the migration already, Could you share your changes? I

> > > mean overview, why and how.
> > >
> > > On 12/9/06, P. R. B. < dysbiote at yahoo.com> wrote:
> > > >
> > > > Another thing to consider is to put the JSword and Common code into

> a
> > > > basic OSGi bundle / RCP plugin jar and have BibleDesktop run an OSGi
> > > > framework implementation (something like Apache Felix). The
> Crosswire jars
> > > > would stay independent of RCP, yet RCP developers could treat the

> jars as
> > > > standard plugins. Some abstraction classes would still need to be
> made to
> > > > the JSword/Common code for RCP'rs, to reduce the conflicts that
> Zhaojun and

> > > > I ran into.
> > > >
> > > > I don't know enough about OSGi to say what other pros and cons there
> > > > are.
> > > >
> > > > As for making BibleDesktop a standard GUI RCP: Yes, you'd be

> dependent
> > > > on SWT.
> > > >
> > > > Any other thoughts? It seems like we've got some good ideas floating
> > > > around.
> > > >

> > > > ----- Original Message ----
> > > > From: David < lzj369 at gmail.com>
> > > > To: J-Sword Developers Mailing List <
jsword-devel at crosswire.org >
> > > > Sent: Friday, December 8, 2006 10:50:14 PM
> > > > Subject: Re: [jsword-devel] feather request: book downloading and
> > > > index generating api

> > > >
> > > > The main advantage for RCP that it hides the low level details from
> > > > business logic. A big plus is cross platform is piece of cake. We
> can click

> > > > several times to make it run on almost every platform like linux,
> > > > windows,mac ,ppc, you name it. It is native code call from java
> layer, thus
> > > > very fast.

> > > > The biggest challenge is the size.
> > > >
> > > >  The default size is like 9mb.
> > > >
> > > > Another advantage is update: RCP has built-in update site support.

> It
> > > > even supports anatomical update! even scheduled update!
> > > >
> > > > Plus, it is de facto standard for JAVA IDE now. and IBM is behind
> it.
> > > >

> > > > as far as BD gui, it is hard to tell because it depends. My
> experince
> > > > tells me that it is very easy to mimic the current gui with two
> views.
> > > > Installation view can be done , I have it done already, it can be

> shared.
> > > > The other part is main gui: it should be a Form base with a broswer
> GUI or
> > > > two.
> > > > The preference can be done by using RCP built-in preference api. It

> is
> > > > very simple. I can share my code by providing a simple tutorial.
> > > >
> > > > BTW, all code are open sourced.
> > > >
> > > > I have different opinion about the classloader. Yes, jsword's class

> > > > loader creates an issue for RCP. However, I do not think removing it
> is a
> > > > good idea. We can add addition classes or addition methods to jword
> (Jsword,
> > > > and common) to solve this issue. Maybe is is time to create an

> standard
> > > > eclipse plugin. I can offer help on this one.
> > > > Next week I will release all the code to a place so everyone can
> share
> > > > and modify.  The GUI like a clone of WEBSOWRD on 
crosswire.com
> > > >
> > > > In Christ,
> > > >
> > > > Zhaojun
> > > > On 12/8/06, DM Smith <
dmsmith555 at yahoo.com> wrote:
> > > > >
> > > > > Zhaojun and Phillip,
> > > > > I think there is enough interest that it would be good to meld all
> > > > > this into one effort.

> > > > >
> > > > > Phillip, I'm sorry you have burned out. Perhaps if we had
> > > > > collaborated we could have shared the load.
> > > > > Please help me understand the advantages and disadvantages of

> going
> > > > > to RCP for JSword and Common. And what impact it would have on the
> > > > > BibleDesktop GUI. How portable is RCP? Will it run on all
> platforms that

> > > > > Java runs? Or is it limited like SWT?
> > > > >
> > > > > I've done a bunch of reading, but have been focusing on adding
> > > > > behavior to what we have. So I have not really experimented too

> much.
> > > > >
> > > > > In Him
> > > > > DM
> > > > > On Dec 8, 2006, at 9:17 PM, P. R. B. wrote:
> > > > >
> > > > > Hi gang,

> > > > >
> > > > > I ran into the same problem with RCP. I ultimately turned the core
> > > > > JSword libraries (common and jsword -- the parts I was after) into

> an RCP
> > > > > plug-in that could accommodate the RCP Job class and use plug-ins
> to extend
> > > > > the installer, filter, and driver (RCP needs to manage class
> loaders itself,

> > > > > so the class utilities and property files were removed). The key
> to changing
> > > > > the job code, for me, was to replace JSword-Job calls  with
> IProgressMonitor

> > > > > calls, and making all calls run in the caller's thread. The
> IProgressMonitor
> > > > > interface serves essentially the same purpose and the JSword Job
> class, so

> > > > > the change was fairly straight-forward.
> > > > >
> > > > > I have an example of the changes that I made at the bottom of this
> > > > > e-mail.

> > > > >
> > > > > Off-topic: I hit project burn-out with this endeavor a few weeks
> > > > > back and the fate of the code is undecided (I take project
> burn-out pretty

> > > > > hard). The JSword plug-in is functional and the RCP application is
> 100%
> > > > > working. If anyone wants to play with it or is interested in
> helping me
> > > > > resurrect the thing back to life, please let me know.

> > > > >
> > > > > Thanks,
> > > > > -Phillip
> > > > >
> > > > > --
> > > > >
> > > > > Example changes to convert JSword Job code to use IProgressMonitor

> > > > > (for non-RCP'rs, IProgressMonitor and IStatus are part of the
> Eclipse/RCP
> > > > > core API):
> > > > >
> > > > > Installer interface:

> > > > >     IStatus install(IProgressMonitor monitor, Book book);
> > > > >
> > > > > HttpSwordInstaller class:
> > > > >     public IStatus install(IProgressMonitor monitor, Book book){

> > > > >         // Is the book already installed? Then nothing to do.
> > > > >         if (Books.installed().getBook(book.getName()) != null)
> > > > >         {

> > > > >
> monitor.beginTask(Msg.INSTALLING.toString(book.getName()),
> > > > > 1);
> > > > >             monitor.worked(1);
> > > > >             
monitor.done();
> > > > >             return Status.OK_STATUS;
> > > > >         }
> > > > >
> > > > >         final SwordBookMetaData sbmd = (SwordBookMetaData)

> > > > > book.getBookMetaData();
> > > > >         try
> > > > >         {
> > > > >             // the task has as many steps to perform as there are

> > > > > parts to the download
> > > > >
> monitor.beginTask(Msg.INSTALLING.toString(book.getName()),
> > > > > (getSize(book) / 4096) + 1);
> > > > >             
monitor.subTask(Msg.JOB_INIT.toString());
> > > > >
> > > > >             URL temp = NetUtil.getTemporaryURL("swd", ZIP_SUFFIX);
> > > > > //$NON-NLS-1$
> > > > >

> > > > >             // download the book. Each chunk downloaded
> contributes
> > > > > to the monitor's work.
> > > > >             download(monitor, directory + '/' + PACKAGE_DIR,

> > > > > sbmd.getInitials() + ZIP_SUFFIX, temp);
> > > > >
> > > > >             // Once the unzipping is started, we need to continue
> > > > >             File dldir = 
SwordBookPath.getDownloadDir();
> > > > >             if (!monitor.isCanceled())
> > > > >             {
> > > > >                 monitor.subTask (Msg.JOB_CONFIG.toString
());
> > > > >                 IOUtil.unpackZip(NetUtil.getAsFile(temp), dldir);
> > > > >                 SwordBookDriver.registerNewBook(sbmd, dldir);
> > > > >             }

> > > > >
> > > > >         }
> > > > >         catch (Exception ex)
> > > > >         {
> > > > >             Reporter.informUser
(this, ex);
> > > > >             return new Status(IStatus.ERROR,
> > > > > JswordActivator.PLUGIN_ID, 0, Msg.UNKNOWN_ERROR.toString(), ex);
> > > > >         }
> > > > >         finally

> > > > >         {
> > > > >             monitor.done();
> > > > >         }
> > > > >
> > > > >         return Status.OK_STATUS;

> > > > >
> > > > >
> > > > > ----- Original Message ----
> > > > > From: David < lzj369 at gmail.com>
> > > > > To: J-Sword Developers Mailing List < 
jsword-devel at crosswire.org>
> > > > > Sent: Friday, December 8, 2006 10:26:01 AM
> > > > > Subject: Re: [jsword-devel] feather request: book downloading and

> > > > > index generating api
> > > > >
> > > > > Hi, DM,
> > > > > If you just want to migrate to SWT, I personally think it does not
> > > > > worth it. SWT just another set of API, like SWING.  However, if

> you want to
> > > > > migrate to NETBEAN RCP or Eclipse RCP, I will applause your
> effort. (The
> > > > > application size will be increased by 6-9MB).  For Eclipse RCP,

> the work is
> > > > > just create veiws and call jword api.
> > > > >
> > > > > The work I am doing is based on Eclipse RCP. Jsword is a base part
> > > > > of it. The plan is to build a p2p system that can enable blog ,

> forum
> > > > > sharing, of course file sharing(  JXTA.)  next year.  It will be a
> set of
> > > > > plugins.
> > > > >
> > > > > Right now, I am rewriting the system to look like exactly what is

> on
> > > > > web sword interface. After all, people are familar with web
> interface.  I ,
> > > > > however did a websword plugin with tomcat embedded(yes, a server
> on user's

> > > > > desktop).  It is cool. However, due to other considerations, I put
> it on
> > > > > hold.
> > > > >
> > > > > Since you are interest, I will put the source code to Google code

> > > > > next week.  I tried sourceforge, still does not get approved.  An
> > > > > alternative is I put the code temporily into jwsord SVN, so you
> can look at
> > > > > it. Again, next week. :)

> > > > >
> > > > >
> > > > >
> > > > > On 12/8/06, DM Smith < dmsmith555 at yahoo.com> wrote:
> > > > > >

> > > > > > We hope to migrate the UI to SWT. So I am very interested in
> your
> > > > > > RCP
> > > > > > work. Is there a place where I can see what you have done. If

> > > > > > possible,
> > > > > > I'd like to minimize your pain of re-integrating the JSword as
> it
> > > > > > changes.
> > > > > >

> > > > > > David wrote:
> > > > > > > Eclipse RCP platform has its own threading api. Use can choose
> > > > > > the job
> > > > > > > run on backgroud or foreground. I maybe need to double check

> why
> > > > > > the
> > > > > > > process failed. (I believe it is because of threading)
> > > > > > > For book installation, I added two mirror methods to do

> > > > > > downloading
> > > > > > > and copying.  It works fine. The only issue is the api and
> > > > > > package
> > > > > > > keep changing and I have to compare every time there is a new

> > > > > > release
> > > > > > > and merge the code.
> > > > > > >
> > > > > > > For indexing, I have not made it to work correctly.  I will

> > > > > > study the
> > > > > > > code next week. The basic idea is kick off a background job
> and
> > > > > > call
> > > > > > > jsword api to generate index. No thread for indexing itself is

> > > > > > needed.
> > > > > > >
> > > > > > > For Web sword, the book installation is on server side. Never
> > > > > > mind.

> > > > > > > It will not be used for end users. I put it on hold because I
> > > > > > have
> > > > > > > several othe plugins need to be done soon.
> > > > > > >

> > > > > > > Zhaojun
> > > > > > >
> > > > > > > On 12/8/06, *DM Smith* < dmsmith555 at yahoo.com
> > > > > > > <mailto:
dmsmith555 at yahoo.com>> wrote:
> > > > > > >
> > > > > > >     David wrote:
> > > > > > >     > Hi, DM and fellow developers,

> > > > > > >     >
> > > > > > >     > I am developing web sword(90% done, pure j2ee
> > > > > > implementation, will
> > > > > > >     > help web hosting) and sword on eclipse RCP.  Issues were

> > > > > > raised up
> > > > > > >     > when I try to integrate install book and generate
> indices.
> > > > > > The code
> > > > > > >     > now has job api build in and also has the reporter to

> > > > > > >     communicate with
> > > > > > >     > user UI.
> > > > > > >     >
> > > > > > >     > In order to accelerate the acceptance of jword

> > > > > > library,  the api for
> > > > > > >     > downloading books and api for index processing need to
> > > > > > seperated
> > > > > > >     from

> > > > > > >     > Job api.
> > > > > > >     I'm not sure I understand the problem.
> > > > > > >
> > > > > > >     The index api (
org.crosswire.jsword.index) is independent
> of
> > > > > > the
> > > > > > >     Job and
> > > > > > >     Reporter apis. The Lucene implementation is not.

> > > > > > >     Likewise for the install api ( org.crosswire.jsword.index
> )
> > > > > > and the
> > > > > > >     sword
> > > > > > >     implementation.

> > > > > > >
> > > > > > >     Both the Job api and the Reporter api are listener based.
> If
> > > > > > there
> > > > > > >     is no

> > > > > > >     listener for Job events or Reporter events, then those are
> > > > > > not heard.
> > > > > > >     Any listener of your choosing can be provided or not

> > > > > > provided. It
> > > > > > >     is up
> > > > > > >     to you.
> > > > > > >
> > > > > > >     The purpose of the Job and Reporter apis is to provide

> > > > > > asynchronous
> > > > > > >     communication of a potentially background task thread. For
> > > > > > >     example, you
> > > > > > >     will notice in BibleDesktop that you can download and/or

> > > > > > index
> > > > > > >     more than
> > > > > > >     one Book at a time. Each download and index is on its own
> > > > > > thread

> > > > > > >     and it
> > > > > > >     communicates back to BibleDesktop asynchronously of its
> > > > > > progress
> > > > > > >     or any

> > > > > > >     problems that are encountered.
> > > > > > >
> > > > > > >     In a web environment asynchronous communication of
> > > > > > long-lived

> > > > > > >     threads on
> > > > > > >     the server may prove to be a challenge, but it should be
> > > > > > possible.
> > > > > > >

> > > > > > >
> > > > > > >     _______________________________________________
> > > > > > >     jsword-devel mailing list
> > > > > > >     
jsword-devel at crosswire.org
> <mailto:jsword-devel at crosswire.org
> > > > > > >
> > > > > > >     
http://www.crosswire.org/mailman/listinfo/jsword-devel
> > > > > > >
> > > > > > >
> > > > > > >

> > > > > >
> ------------------------------------------------------------------------
> > > > > > >
> > > > > > > _______________________________________________

> > > > > > > jsword-devel mailing list
> > > > > > > jsword-devel at crosswire.org
> > > > > > > 
http://www.crosswire.org/mailman/listinfo/jsword-devel
> > > > > > >
> > > > > >
> > > > > >
> > > > > > _______________________________________________

> > > > > > jsword-devel mailing list
> > > > > > jsword-devel at crosswire.org
> > > > > > 
http://www.crosswire.org/mailman/listinfo/jsword-devel
> > > > > >
> > > > >
> > > > > _______________________________________________
> > > > > jsword-devel mailing list

> > > > > jsword-devel at crosswire.org
> > > > > http://www.crosswire.org/mailman/listinfo/jsword-devel

> > > > >
> > > > >
> > > > > ------------------------------
> > > > > Check out the all-new Yahoo! Mail
> beta<
http://us.rd.yahoo.com/evt=43257/*http://advision.webevents.yahoo.com/mailbeta>- Fire up a more
> powerful email and get things done faster.
> > > > > _______________________________________________

> > > > > jsword-devel mailing list
> > > > > jsword-devel at crosswire.org
> > > > >  
http://www.crosswire.org/mailman/listinfo/jsword-devel
> > > > >
> > > > >
> > > > >
> > > > > _______________________________________________

> > > > > jsword-devel mailing list
> > > > > jsword-devel at crosswire.org
> > > > > 
http://www.crosswire.org/mailman/listinfo/jsword-devel
> > > > >
> > > > >
> > > > >
> > > > _______________________________________________
> > > > jsword-devel mailing list

> > > > jsword-devel at crosswire.org
> > > > http://www.crosswire.org/mailman/listinfo/jsword-devel

> > > >
> > > >
> > > > ------------------------------
> > > > Access over 1 million songs - Yahoo! Music Unlimited.
> > > >
> <
http://pa.yahoo.com/*http://us.rd.yahoo.com/evt=36035/*http://music.yahoo.com/unlimited/>
> > > >
> > > > _______________________________________________
> > > > jsword-devel mailing list

> > > > jsword-devel at crosswire.org
> > > > http://www.crosswire.org/mailman/listinfo/jsword-devel

> > > >
> > > >
> > > >
> > > _______________________________________________
> > > jsword-devel mailing list
> > > 
jsword-devel at crosswire.org
> > > http://www.crosswire.org/mailman/listinfo/jsword-devel
> > >
> > >
> > > ------------------------------

> > > Any questions? Get answers on any topic at Yahoo!
> Answers<
http://answers.yahoo.com/;_ylc=X3oDMTFvbGNhMGE3BF9TAzM5NjU0NTEwOARfcwMzOTY1NDUxMDMEc2VjA21haWxfdGFnbGluZQRzbGsDbWFpbF90YWcx>.
> > > Try it now.
> > >
> > > _______________________________________________

> > > jsword-devel mailing list
> > > jsword-devel at crosswire.org
> > > 
http://www.crosswire.org/mailman/listinfo/jsword-devel
> > >
> > >
> > >
> > _______________________________________________
> > jsword-devel mailing list
> > 
jsword-devel at crosswire.org
> > http://www.crosswire.org/mailman/listinfo/jsword-devel
> >

> >
> > _______________________________________________
> > jsword-devel mailing list
> > jsword-devel at crosswire.org
> > 
http://www.crosswire.org/mailman/listinfo/jsword-devel
> >
> >
> > _______________________________________________
> > jsword-devel mailing list
> > 
jsword-devel at crosswire.org
> > http://www.crosswire.org/mailman/listinfo/jsword-devel
> >
> >
> > ------------------------------

> > Everyone is raving about the all-new Yahoo! Mail
> beta.<http://us.rd.yahoo.com/evt=45083/*http://advision.webevents.yahoo.com/mailbeta
>
> >
> > _______________________________________________
> > jsword-devel mailing list
> > jsword-devel at crosswire.org
> > 
http://www.crosswire.org/mailman/listinfo/jsword-devel
> >
> >
> >

--
"Ein Herz f�r Kinder" - Ihre Spende hilft! Aktion: 
www.deutschlandsegelt.de
Unser Dankesch�n: Ihr Name auf dem Segel der 1. deutschen America's Cup-Yacht!

_______________________________________________
jsword-devel mailing list

jsword-devel at crosswire.org
http://www.crosswire.org/mailman/listinfo/jsword-devel




_______________________________________________
jsword-devel mailing list
jsword-devel at crosswire.org
http://www.crosswire.org/mailman/listinfo/jsword-devel







 
____________________________________________________________________________________
Have a burning question?  
Go to www.Answers.yahoo.com and get answers from real people who know.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.crosswire.org/pipermail/jsword-devel/attachments/20061209/488b2086/attachment-0001.html 


More information about the jsword-devel mailing list