MENTOR WANTED! If you are mentor please mail me to [gmail account is makarov.wk]
=== "Port Mozilla C/C++ codebase to java" (Firefox)
To make it short java pros and cons are not discussed here. Anyway there are advantages of implementing browser purely in java. The aim of this project is to port as much Firefox codebase as possible to create java version of Firefox eventually.
Java is already used [1] in extensions development in Firefox. And there is [Rhino] that is JS engine in java. Other pieces of platform can be also replaced by java implementation. The idea is to split Firefox into two parts. One part is legacy c/c++ code. Another part is original code semi-automatically translated (and manually adopted) to java. As example [Squawk] is java vm project that written in java as much as possible. Some code written in "c-subset of java" to be translated to C and compiled natively. This example only shows how two languages can be used together via translation and java code will not be translate back in this project.
Project will create iterative and incremental process. Every cycle starts with working version of java Firefox (splitted up into legacy and ported parts). Cycle consist of following development tasks:
1. Choosing legacy module/sources to port.
2. Running source translator on it.
3. Fixing (porting) broken code. Beside fixing runtime for translated code (special library to reduce and simplify code modifications of translated sources) is updating.
4. Analysis new porting patterns and cases for translation using new runtime features.
5. Modify translator according discovered patterns so it will produce more applicable code.
6. Recover two java Firefox parts integrity if any problems. Update build scripts.
As you see plan focused on developing translator and runtime for translated code. Semi-automated process will become automated as much as possible to port bigger part of Firefox during the summer.
== Related projects
There are existing C/C++ to java translators [C2J]. All of them cannot be used straightway. Programmer must correct much after translation. This project use development of translated code runtime as basis. Weaknesses of java language by contrast with C++ will be wrapped around sophisticated translated code runtime.
== Deliverables
* Java Firefox consisted of java part and remaining (not ported yet) legacy code. Two parts will communicate with each other via binding or RPC calls if some java code will be in separate process.
* C/C++ to java translator.
* Translation scheme description.
* Docs with porting patterns.
At any time community will have working java version of Firefox with some sort of distribution of C++ to java code.
== Refs
[1] http://simile.mit.edu/wiki/Java_Firefox_Extension
[2] https://developer.mozilla.org/en/java_in_firefox_extensions
[3] http://www.mozilla.org/rhino/
[4] http://java.net/projects/squawk/
[5] http://tech.novosoft-us.com/product_c2j.jsp
[6] http://www.tangiblesoftwaresolutions.com/Product_Details/CPlusPlus_to_Java_Converter_Details.html