[jsword-devel] Sword drivers - a new way of doing things.

Mark Goodwin jsword-devel@crosswire.org
18 Oct 2002 17:52:46 +0100

I have to admit that sword API similarity was something I had almost
entirely forgotten about.  It's not high on my list of immediate
priorities, but I see it would have some benefit.  

With that in mind, I'll think about retro-fitting some Sword-like naming
to bits I've been working on (the new SwordBible) when I've got time. 
(BTW. Joe, is this API similarity thing the reasoning behind that
RawVerse class in org.crosswire.jsword.book.sword that's apparently not
used anywhere?)

Joe Walker wrote:
> I have already done some work in renaming some classes - for example 
> there is now a Key class. Further work is still planned to update the 
> sword tree (which is and should remain very Sword compatible) to proxy 
> to the JSword tree. This way users get the best of all possible worlds. 
> Anyone wanting to write Java code using the C++ Sword API could do so, 
> but we don't have to re-architect everything and (in my opinion) loose 
> some of the benefits of the Java way of doing things.

This, I guess would be the only real concern I'd have about syncing the
two APIs:  There are some things that are easier expressed in one
language than another; people have made good use of features absent in
Java for Sword (multiple inheritance for implementation), and there are
other things that would be far more elegantly done in Java-like ways
(using Streams for cipher / compression work). 

I think the proxy approach is a good one - if we're careful, there
needn't be much to the proxy layer at all.

> So the question of priority - personally I'm more aware of people 
> wanting support for Lexicons, properly working JNLP, etc than I am of 
> strict API compatibility. I'd planned to work on the C++ compatible API 
> when someone wanted to use it mostly because it's not a itch for me 
> personally.

The two itches at the top of my list at the moment are friendly module
installation (depends on some preferences work - more on preferences
another day) which is needed for a JNLP build that's useful for
anything, and Lexicon support.  The latter is pretty much new ground for
JSword, and will likeley borrow heavily from Sword's design anyway.