Giter VIP home page Giter VIP logo

sharpen's Introduction

Sharpen - Automated Java->C# coversion

imazen/sharpen masterimazen master - AppVeyor develop imazen develop - AppVeyor

mono/sharpen mastermono master - AppVeyor (permissions issue) develop mono develop - AppVeyor (permissions issue)

Sharpen is a library and command-line tool for automating Java to C# code conversion. You can provide configuration classes to control a wide range of class and functionality mapping.

Sharpen doesn’t provide a compatibility runtime (i.e, an implementation of all java functionality on top of .NET), but it does provide some utility classes to meet the most common needs.

It’s likely that you will need to create a configuration class to customize and perfect your conversion, and you may need to apply patches to the result as well.

Sharpen was originally created by db40 svn source here in the format of an Eclipse plugin, but it has since been refactored to work from the command line and on build servers.

Building and testing sharpen itself

  1. Clone this repository
  2. Install Java 7 and maven. Java 6 and 8 aren’t supported.
  3. Run ‘mvn clean test’ to test
  4. Run ‘mvn install ’ to generate .jar files in /sharpen.core/target

Running sharpen

  1. mvn install should have created a file named sharpencore-0.0.1-SNAPSHOT-jar-with-dependencies.jar. This is a self-contained copy of sharpen that can be run anywhere.
  2. Run java -jar sharpencore-0.0.1-SNAPSHOT-jar-with-dependencies.jar SOURCEPATH -cp JAR_DEPENDENCY_A JAR_DEPENDENCY_B
    Each dependecy needed by the java source should be specified as a full path to the jar file. SOURCEPATH should also be a full path.
  3. Run -help for syntax

Sharpen allows for configuration through code

Sharpen’s command-line options don’t let you fully override all conversion options and behaviour. For example if you need to change mapping of primitive types or allow/deny mapping between iterators and enumerators, ...

Creating external config class

Your external configuration class must:

  • inherit Configuration class;
  • must be publicly visible;
  • must have a public constructor;

An example configuration project can be found here https://github.com/ydanila/sharpen_imazen_config.

Using your custom config class

Name your jar file <configuration class name>.sharpenconfig.jar in the sharpen directory. Then specify the full configuration name via the command line parameter -configurationClass (or via the options file).

For example, for the XMP core port with this prebuilt Sharpen configuration could be used as follows.

java -jar sharpen-jar-with-dependencies.jar C:/java_src/ -configurationClass sharpen.config.MEConfiguration @sharpen-all-options-without-configuration

Configuration also could be specified in an options file. In this case, for the XMP core port with this prebuilt Sharpen configuration it could be used like this:

java -jar sharpen-jar-with-dependencies.jar C:/java_src/ @sharpen-all-options

sharpen's People

Contributors

slluis avatar lilith avatar sharwell avatar ydanila avatar hazzik avatar asimarslan avatar therzok avatar ecerta avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.