Sharpen 是 db4o 開源的 Java-to-C# 翻譯工具,基於 Eclipse JDT AST 解析 Java 原始碼並產出對等 C# 程式碼。支援語法對應、集合轉換、異常處理、泛型等核心語言特性。
file.jvm.jdk1.5 路徑)https://source.db4o.com/db4o/trunk/sharpen 以 SVN 檢出 4 個專案(sharpen.core, sharpen.ui, sharpen.tests, sharpen.ant)至**同一工作區**。在待轉換的 Java 專案根目錄新增兩個檔案:
# eclipse workspace
dir.workspace=C:/Documents and Settings/Administrator/桌面/paoding
# java executable
file.jvm.jdk1.5=D:/Java/jdk1.5.0/bin/java.exe
# Eclipse home directory
eclipse.home=D:/Java/MyEclipse 6.5/eclipse
# Eclipse startup jar
eclipse.startup.jar=${eclipse.home}/plugins/org.eclipse.equinox.launcher_1.0.0.v20070606.jar
# sharpen compile directory
dir.dist.classes.sharp=dist/sharpen
# Eclipse plugins home
plugins.home=${eclipse.home}/plugins
請依實際環境修改路徑(workspace、JDK、Eclipse 根目錄)。
<project name="sharpen common">
<property file="sharpen.properties" />
<macrodef name="reset-dir">
<attribute name="dir" />
<sequential>
<delete dir="@{dir}" />
<mkdir dir="@{dir}" />
</sequential>
</macrodef>
<macrodef name="sharpen">
<attribute name="workspace" />
<attribute name="resource" />
<element name="args" optional="yes" />
<sequential>
<exec executable="${file.jvm.jdk1.5}" failonerror="true" timeout="1800000">
<arg value="-Xms256m" />
<arg value="-Xmx512m" />
<arg value="-cp" />
<arg value="${eclipse.startup.jar}" />
<arg value="org.eclipse.core.launcher.Main" />
<arg value="-data" />
<arg file="@{workspace}" />
<arg value="-application" />
<arg value="sharpen.core.application" />
<arg value="-header" />
<arg file="config/copyright_comment.txt" />
<arg value="@{resource}" />
<args />
</exec>
</sequential>
</macrodef>
<target name="install-sharpen-plugin">
<property name="sharpen.core.dir" location="../sharpen.core" />
<reset-dir dir="${dir.dist.classes.sharp}" />
<javac fork="true" debug="true" target="1.5" source="1.5"
destdir="${dir.dist.classes.sharp}" srcdir="${sharpen.core.dir}/src"
encoding="UTF-8">
<classpath>
<fileset dir="${eclipse.home}/plugins">
<include name="org.eclipse.osgi_*/osgi.jar" />
<include name="org.eclipse.core.resources_*/resources.jar" />
<include name="org.eclipse.core.runtime_*/runtime.jar" />
<include name="org.eclipse.jdt.core_*/jdtcore.jar" />
<!-- redundant entries for newer eclipse -->
<include name="org.eclipse.osgi_*.jar" />
<include name="org.eclipse.core.resources_*.jar" />
<include name="org.eclipse.core.runtime_*.jar" />
<include name="org.eclipse.jdt.core_*.jar" />
<include name="org.eclipse.jdt.launching_*.jar" />
<include name="org.eclipse.equinox.*.jar" />
<include name="org.eclipse.core.jobs_*.jar" />
</fileset>
</classpath>
</javac>
<property name="plugin.dir" value="${plugins.home}/sharpen.core_1.0.0" />
<reset-dir dir="${plugin.dir}" />
<jar destfile="${plugin.dir}/sharpen.jar" basedir="${dir.dist.classes.sharp}" />
<copy todir="${plugin.dir}" file="${sharpen.core.dir}/plugin.xml" />
</target>
</project>
Sharpen-Common.xml。install-sharpen-plugin 目標 → Run As → Ant Build(確保 Sharpen 外掛已安裝)。sharpen 巨集,參數指定 workspace 與要轉換的專案/資源路徑。dist/sharpen 目錄。

Sharpen 為大型 Java 遷移 .NET 提供了自動化起點。掌握其安裝配置流程,能在評估遷移可行性、建立初版 C# 碼庫時節省大量人力。但記住:自動轉換只是開始,架構對齊與測試驗證才是成功關鍵。