See also: JavaWikiEngines
Take a look at ChikiWiki
for an example of a J2EE wiki -- GhootEmaho
(no activity since 2002...)
I'm having a go at building a limited WikiWikiClone
in Java using JavaServlet
s. I say limited, because I just want to mimic c2, in a language I understand, on my local server. I don't have any ambitions to EmbraceAndExtend
as some other CloneWriters?
are doing :-) (no offence Austin!)
I have been speaking to AustinDavid
, who is working on a WikiWikiClone
called Kwiki, and WardCunningham
, (who I'm sure needs no introduction). Ward, it seems, has a vague urge to give a ServletBasedWiki
Ward has written a WikiTranslator
in Java (http://c2.com/~ward/java/wiki
) which hopefully will mean I don't have to worry about converting WikiMarkupLanguage
to HTML (once Ward releases the translator).
I thought I'd take this discussion onto Wiki since I'm sure many folks out there will have "Things To Say".
Also, check out the JikiJikiJava
What persistence options are people using for Wiki in Java? Doesn't this present some difficult choices, compared with the imperfect but convenient dbm access available in Perl?
In particular, I'm concerned with these issues:
- If a process dies, we need to ensure that the pages remain in some kind of consistent state.
- Tempering memory management issues with some kind of persistent page database. Are people using or extending serialization? - and can this be done reasonably efficiently (i.e. we don't want to be frequently creating "lots of little objects")
What choices have you made and why?
UPDATE: -- AlanFrancis
Well it kinda goes. My wiki (also called jiki - how many names are there ? :) supports automatic WikiWord
detection, the 4*hyphen - <HR> conversion, links for existing pages, ? for non-existing pages. I have a Recent Changes and basic title search. THere's no complex formatting (lists, <pre> bold italic etc).
This is a Prototype
. A SpikeSolution
and as such it's pretty crafty.
Pages are saved use standard Serialization which means they aren't in a human-readable form and that could mean versioning problems. I plan to modify this so the pages are stored either as raw text (with RFC-822 headers for stuff like last-edited-date and last-edited-by) or.... the ubiquitous XML.
Next plan is to rebuild using a slightly more modular architecture (thanks Austin!) and I also plan to use JavaServerPages
for the presentation engine.
The servlet will do the db querying, save the results to a JavaBean
and then supply the client with a JSP for browse, edit, search or post. The JSP has access to the bean and can then extract the info it needs and format the page accordingly.
I may even be able to do the WikiTranslation?
inplace in the JSP :-)
JSP seems a bit heavyweight to me. I have had good experiences with WebMacro (http://www.webmacro.org) which also allows introspection-based access to data from web pages, but is (to me, at least) a lot nicer. -- FrankCarver
I reckon that depends on what you do with them... :-) My JSPs simply format the text that I would pass in as a bean. (I gave up on the idea of WikiTranslation?
in place) :-). Ward, your (admittedly beta) WikiTranslator
worked wonders and the only thing it doesn't do is preformatted stuff.
Also, I'd like to keep this compiling "out-of-the-box" so no dependence on outside libraries... -- AlanFrancis
Also consider a different SpikeSolution
, in the form of FrikiServlet
. It's not quite a WikiWikiClone
, but it does a similar job. I'm hoping to trim it down by using WebMacro
sometime soon. -- FrankCarver
There is now a new version of Friki which implements the full markup and doesn't use any heavyweight libraries (the JDK1.4 download is just 54k, which includes a ready-to-run war file with example pages and 20k of configuration documents). You don't need a full-power template engine like WebMacro
, you certainly
don't need JSP. See FrikiServlet
for more information.
Alan and I independently started similar projects, and we've both become stuck
at various stages due to the annoying pressures of other work. Our designs
are similar: servlets for interacting with the page store and similar stuff,
Ward's JavaCC translator for actually converting wiki-format to HTML, and JSPs
for the rest of the page formatting. My design is geared toward HTML output
with multiple page source formats (a la AtisWiki
), whereas Alan's assumes
wiki as the source format and allows for non-HTML interfaces. (In retrospect,
I like Alan's plans better, I think.)
One difference is that I'm trying to gear mine to use some of the new servlet
and JSP features, especially the "Web Application" support that can make it
very easy to install and customize the system (including look-and-feel
customization and "branding"). It should also be easy to support multiple
different wikis on the same web server. This means that, at least in the
short term, my ServletBasedWiki
will not be as widely useful as Alan's, because
servers won't support all of the new features right away.
Alan's is also farther along than mine (I have page display and editing working,
but no search and no recent changes yet). (I've seen some of Alan's stuff, but
he hasn't seen mine, because I ... um ... keep forgetting to send it to him.)
We have very similar goals, but I'm continuing to work on my own for two
reasons: it's a project to learn more about servlet and JSP development, and I'd
like to replace our internal wiki that we use for our consulting practice (we're
currently using AtisWiki
). -- GlennVanderburg
DATELINE: Edinburgh, UK
In between my real work (see XpEdinburgh
) I've managed to completely overhaul what was called Jiki (and worked, just) into what I've just called wiki.
Details moved to AlansWikiEngine?
[details of public access removed - my site is no more.... -- AlanFrancis
Alan and I have continued to work in parallel on our own projects, and lately
I've had more time than he has. My wiki (tentatively called Siki
functional now, although it doesn't have search facilities. The primary
incentive has been to replace the software for our consulting group's internal
wiki (currently running AtisWiki
) and we plan to cut over early next week.
I spent most of last week learning AntlrTranslatorGenerator
and writing a JavaWikiTranslator?
(hop over to that page for more info).
Very soon after Siki begins actively supporting users, I plan to release the
code under some variety of open-source license. Until that time, suggestions
for better names will be gratefully accepted. :-)
, 16 March 2000
is nice candidate for servlet wiki. It is very easy to set up; it only took me 5 minutes. It has different kinds of persistence for pages: file base, or RCS to get versions, or CVS based(in development.) The performance is great when built-in caching is used. It supports tables, bullets, heading, WikiName
Found a Struts based early Wiki here.
is a Java servlet/JSP-based wikilog, very similar to VaNilla
, and under active development. SnipSnap
as a LGPL rendering engine sub project.
-- Added by GoofRider on 2002-10-24