CSharpJavaMerger is an open source tool. It provides common interfaces of C# and Java and enables you to write one set of code which can be used both by C# and Java. Below is a method that can be used in both of C# and Java. In the sample, CString is a class defined in the CSharpJavaMerger Framework. public void AddTwoValues() { try { CString strValue1 = m_mainForm.GetFirstTextBoxValue(); CString strValue2 = m_mainForm.GetSecondTextBoxValue(); int iValue1 = strValue1.ToInteger(); int iValue2 = strValue2.ToInteger(); int iResult = iValue1 + iValue2; CString strShowResult = CString.ValueOf(iResult); m_mainForm.ShowResult(strShowResult); CString strSaveResult = new CString(strValue1.GetValue() + " + " + strValue2.GetValue() + " = " + strShowResult.GetValue() + "\n"); m_mainForm.SaveResult(strSaveResult); } catch (Exception ee) { m_mainForm.SaveResult(new CString(ee.Message + "\n")); m_mainForm.ShowResult(new CString("Error")); } } More info on CSharpJavaMerger: http://www.kevingao.net/csharp-java-conversion
In Brazil (Federal University of Pernambuco) there exists a project of a software that generates c# from java and java from c#. I don't know if it is open source and free but it is a very good project too.