W3C Internationalization Checker - An API rewrite in Java

Author
Joseph J Short, University of East Anglia, UK

Note: This document is written in valid HTML5 markup.


Project description

The World Wide Web Consortium (W3C) Internationalization Checker (i18n Checker) aides web developers in the creation of language-sensitive web pages by providing a detailed summary of character encoding, language declarations, and so on. It is one of a number of free services that comprise the W3C’s ‘Validator Suite’ for web developers. The project embodies W3C’s objective of “making the web world-wide”, and their slogan, “Leading the web to its full potential”.

The i18n Checker is currently a ‘pre-final release’ web-application written in PHP. As it stands, the logic that comprises the validation and summary is integrated into the logic of the web service. The whole web application must therefore be deployed and run on a PHP supporting server for its functionality to be used.

The purpose of this project is to bring the i18n up to date with its counterpart validators by rewriting it in Java, and separating the validation logic into an API. This will leave the W3C with a modularised, easy to deploy API, which can be run by itself or integrated into other applications.

The project also has a focus on robust and maintainable code. An existing test-suite must be ported into Java, and the new Java code must conform to these tests.

The deliverables of this project, in decreasing order of priority, are: a Java API version of the i18n Checker; a Java version of the test suite and related integration; project documentation and integration with the www interface; and further development of the i18n Checker by adding support for HTML5 markup and so on.

Tools and technologies

I plan to use the following tools during the project:

Apache Maven
I shall use a Maven Project Object Model (POM) to describe the software project, and to handle the dependencies and build tasks.
Git and github.org
I shall be using Git to track changes to the source code.
Github.org
Github shall be my remote host. The remote repository will be created a member of the W3C.
JUnit
I shall use JUnit for the ported test suite. JUnit integrates well with Maven, providing me with automated testing.
async-http-client
I'll use the async-http-client library to process HTTP requests as part of the API (the basis of its functionality).
Jenkins CI
Jenkins is an integration testing server that also provides automated building and deployment of software projects. I'll use this server, either in a public or private setting, to continuously test and build snapshots of my code.
Markdown
The project shall be documented in Markdown, a very clean and accessible markup language.