[jsword-devel] Update on JSword

DM Smith dmsmith at crosswire.org
Mon Oct 5 05:22:33 MST 2009

I'm working on JSword again after a long time of not being able to.

A couple of notes:
I've upgraded all the QA tools (e.g. findbugs, checkstyle) and in the  
process broke the nightly build. I'll fix that shortly.

I am applying patches, fixing bugs, upgrading 3-rd party components  
and satisfying requests that others have made. I checked in a change  
for Tonny the other night. (Tonny hopefully you grabbed that. If not  
you might need to build the jars yourself.)

If you develop on a Mac in Eclipse and have upgraded to Snow Leopard,  
you'll need to go into Preferences -> Java and delete all the JREs and  
re-add them. Without doing that, it will not let you run the program w/ 
in Eclipse.

Lucene has just released version 2.9. This is in preparation for the  
3.0 release, with the only real difference between the two is that  
deprecations are being removed. The second minor difference is that  
3.0 will require Java 5 as it is introducing Generics into the API  
(supposedly in a backward compatible, drop-in the new jar, kind of  
way. We'll see.) I'm working on upgrading to it. Lots has changed  
internally. The impact to JSword is that our lucene search indexes  
will need to be rebuilt, requiring us to finish their versioning and  
handling a version difference in the front-ends.

Speaking of Snow Leopard for Mac OSX. Our policy has been to support  
old OSes for a long time, but not forever. I.E. the current and two  
prior. Soon we'll be dropping support for Panther, which came out 6  
years ago this month. (A year and a half ago Panther was on 23% of all  
Macs.) This will happen when we go to Lucene 3.0 and Java 5. (Note:  
Tiger does not install Java 5 but it is available for install. We'll  
need to provide notes.) I'd still like to release ELEPHANT (see other  
threads or JIRA for a description) as the last Java 1.4 application.

With the new version of Lucene, I am a new method to PassageTally  
called getTotal and SearchModifier with (set/get)MaxResults. This  
optimization will give us a place to hang the total number of hits in  
a search request when the user only wants to see the top 20 or so. The  
current code would prioritize all the verses coming back from a search  
and then sort them. These results were then pruned to the top N  
verses. Lucene has now simplified how this can happen with its new  
Collector method. There is a Collector that only retains the hits that  
have a higher score than the N-th one with the lowest score, but  
counts all of them. PassageTally is at its best when it is small. So  
now only the top N are put into the PassageTally and the total hits  
are recorded.

Lucene has also introduced new Arabic and Persian analyzers. These  
will make searches on those much nicer. I'll need some testing  
volunteers for that when I've got it all checked in.

In His Service,
	DM Smith

More information about the jsword-devel mailing list