JAMWiki
Encyclopedia
JAMWiki is wiki software
built around the standard components of Java
, servlets and JSP
. It was written by Ryan Holliday and released under the LGPL
. While for the user JAMWiki is highly similar to MediaWiki
and even uses the same wiki syntax (including templates, etc), it is not a MediaWiki clone but independent implementation, written in a different language and using a different database schema.
JAMWiki internally uses Spring framework provides support for users, authentication and roles. It has two code generation layers: servlets (that can be mapped to the various special pages of the wiki) and JSP
(for the final page generation). Servlet (that is similar to standard servlet
but is not exactly the same class) receives HTTP request, does all processing and puts the name-value pairs into provided context data structure ("model"). On the next stage, JSP uses these values to build the final output.
Search is implemented using Lucene.
JAMWiki runs inside Tomcat
, Glassfish
or other similar server and supports a wide range of databases to store the data. Plugging in non standard database is supported at multiple levels, from providing custom SQL for some queries (it can be separate SQL query files for every database) till implementing custom database query handler (that still returns result sets) or data handler (that uses the query handler internally and already interacts directly with JAMWiki core).
Build system is currently powered by Maven
.
Wiki software
Wiki software is collaborative software that runs a wiki, i.e., a website that allows users to create and collaboratively edit web pages via a web browser. A wiki system is usually a web application that runs on one or more web servers...
built around the standard components of Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...
, servlets and JSP
JavaServer Pages
JavaServer Pages is a Java technology that helps software developers serve dynamically generated web pages based on HTML, XML, or other document types...
. It was written by Ryan Holliday and released under the LGPL
GNU Lesser General Public License
The GNU Lesser General Public License or LGPL is a free software license published by the Free Software Foundation . It was designed as a compromise between the strong-copyleft GNU General Public License or GPL and permissive licenses such as the BSD licenses and the MIT License...
. While for the user JAMWiki is highly similar to MediaWiki
MediaWiki
MediaWiki is a popular free web-based wiki software application. Developed by the Wikimedia Foundation, it is used to run all of its projects, including Wikipedia, Wiktionary and Wikinews. Numerous other wikis around the world also use it to power their websites...
and even uses the same wiki syntax (including templates, etc), it is not a MediaWiki clone but independent implementation, written in a different language and using a different database schema.
JAMWiki internally uses Spring framework provides support for users, authentication and roles. It has two code generation layers: servlets (that can be mapped to the various special pages of the wiki) and JSP
JavaServer Pages
JavaServer Pages is a Java technology that helps software developers serve dynamically generated web pages based on HTML, XML, or other document types...
(for the final page generation). Servlet (that is similar to standard servlet
Java Servlet
A servlet is a Java programming language class used to extend the capabilities of servers that host applications accessed via a request-response programming model. Although servlets can respond to any type of request, they are commonly used to extend the applications hosted by Web servers...
but is not exactly the same class) receives HTTP request, does all processing and puts the name-value pairs into provided context data structure ("model"). On the next stage, JSP uses these values to build the final output.
Search is implemented using Lucene.
JAMWiki runs inside Tomcat
Apache Tomcat
Apache Tomcat is an open source web server and servlet container developed by the Apache Software Foundation...
, Glassfish
Glassfish
Glassfish may refer to:* Asiatic glassfish, marine fishes in the family Ambassidae* GlassFish, a Java Enterprise Edition application server project...
or other similar server and supports a wide range of databases to store the data. Plugging in non standard database is supported at multiple levels, from providing custom SQL for some queries (it can be separate SQL query files for every database) till implementing custom database query handler (that still returns result sets) or data handler (that uses the query handler internally and already interacts directly with JAMWiki core).
Build system is currently powered by Maven
Apache Maven
Maven is a build automation and software comprehension tool. While primarily used for Java programming, it can also be used to build and manage projects written in C#, Ruby, Scala, and other languages. Maven serves a similar purpose to the Apache Ant tool, but it is based on different concepts and...
.
Features
- MediaWiki style syntax - At the present time JAMWiki supports the majority of the Mediawiki syntax including:
- User watchlists.
- MediaWiki footnotes (references).
- MediaWiki templates (recent releases also support conditional constructs)
- MediaWiki categories.
- Image support (including automatic image resizing).
- Topic delete / undelete.
- Topic versioning.
- Searching (powered by LuceneLuceneApache Lucene is a free/open source information retrieval software library, originally created in Java by Doug Cutting. It is supported by the Apache Software Foundation and is released under the Apache Software License....
) - Page move/redirect
- Internationalization - JAMWiki uses UTF-8UTF-8UTF-8 is a multibyte character encoding for Unicode. Like UTF-16 and UTF-32, UTF-8 can represent every character in the Unicode character set. Unlike them, it is backward-compatible with ASCII and avoids the complications of endianness and byte order marks...
unicode as its standard encoding, making it work in languages such as Japanese and ChineseChinese languageThe Chinese language is a language or language family consisting of varieties which are mutually intelligible to varying degrees. Originally the indigenous languages spoken by the Han Chinese in China, it forms one of the branches of Sino-Tibetan family of languages...
.
- XML import / export - JAMWiki can import and export topics in Mediawiki-compatible XML format.