All Projects → mehdimo → Janett

mehdimo / Janett

Licence: other
Java to C#.Net Translator

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Janett

Javaparser
Java 1-15 Parser and Abstract Syntax Tree for Java, including preview features to Java 13
Stars: ✭ 3,972 (+49550%)
Mutual labels:  code-generator, code-analysis
Pylance Release
Documentation and issues for Pylance
Stars: ✭ 782 (+9675%)
Mutual labels:  code-analysis
Codequery
A code-understanding, code-browsing or code-search tool. This is a tool to index, then query or search C, C++, Java, Python, Ruby, Go and Javascript source code. It builds upon the databases of cscope and ctags, and provides a nice GUI tool.
Stars: ✭ 551 (+6787.5%)
Mutual labels:  code-analysis
Pdepend
PHP_Depend is an adaptation of the established Java development tool JDepend. This tool shows you the quality of your design in terms of extensibility, reusability and maintainability.
Stars: ✭ 727 (+8987.5%)
Mutual labels:  code-analysis
Flutter gen
The Flutter code generator for your assets, fonts, colors, … — Get rid of all String-based APIs.
Stars: ✭ 583 (+7187.5%)
Mutual labels:  code-generator
Go Swagger
Swagger 2.0 implementation for go
Stars: ✭ 7,058 (+88125%)
Mutual labels:  code-generator
Youcompleteme
A code-completion engine for Vim
Stars: ✭ 23,518 (+293875%)
Mutual labels:  code-analysis
App Githooks
Plugin-based system to run specific actions and checks when git hooks are triggered.
Stars: ✭ 5 (-37.5%)
Mutual labels:  code-analysis
Python Language Server
Microsoft Language Server for Python
Stars: ✭ 778 (+9625%)
Mutual labels:  code-analysis
Swiftinitializergenerator
Xcode Source Code Extension to Generate Swift Initializers
Stars: ✭ 718 (+8875%)
Mutual labels:  code-generator
Zxw.framework.netcore
基于EF Core的Code First模式的DotNetCore快速开发框架,其中包括DBContext、IOC组件autofac和AspectCore.Injector、代码生成器(也支持DB First)、基于AspectCore的memcache和Redis缓存组件,以及基于ICanPay的支付库和一些日常用的方法和扩展,比如批量插入、更新、删除以及触发器支持,当然还有demo。欢迎提交各种建议、意见和pr~
Stars: ✭ 691 (+8537.5%)
Mutual labels:  code-generator
Colfer
binary serialization format
Stars: ✭ 597 (+7362.5%)
Mutual labels:  code-generator
Astring
🌳 Tiny and fast JavaScript code generator from an ESTree-compliant AST.
Stars: ✭ 757 (+9362.5%)
Mutual labels:  code-generator
Easycode
基于IntelliJ IDEA开发的代码生成插件,支持自定义任意模板(Java,html,js,xml)。只要是与数据库相关的代码都可以通过自定义模板来生成。支持数据库类型与java类型映射关系配置。支持同时生成生成多张表的代码。每张表有独立的配置信息。完全的个性化定义,规则由你设置。
Stars: ✭ 552 (+6800%)
Mutual labels:  code-generator
Graphql Code Generator
A tool for generating code based on a GraphQL schema and GraphQL operations (query/mutation/subscription), with flexible support for custom plugins.
Stars: ✭ 7,993 (+99812.5%)
Mutual labels:  code-generator
Rust Embed
Rust Macro which loads files into the rust binary at compile time during release and loads the file from the fs during dev.
Stars: ✭ 548 (+6750%)
Mutual labels:  code-generator
Freezed
Code generation for immutable classes that has a simple syntax/API without compromising on the features.
Stars: ✭ 667 (+8237.5%)
Mutual labels:  code-generator
Vue Analysis
Vue 源码注释版 及 Vue 源码详细解析
Stars: ✭ 743 (+9187.5%)
Mutual labels:  code-analysis
Hel
Hel rules over Helheim, where the souls unworthy of Valhalla reside. It's also a mock generator for Go.
Stars: ✭ 16 (+100%)
Mutual labels:  code-generator
Springbootcodegenerator
又名大狼狗代码生成器,基于SpringBoot2+Freemarker的JAVA代码生成器,以释放双手为目的,支持mysql/oracle/pgsql三大数据库, 用DDL-SQL语句生成JPA/JdbcTemplate/Mybatis/MybatisPlus/BeetlSQL等相关代码.
Stars: ✭ 810 (+10025%)
Mutual labels:  code-generator

Janett

Janett translates Java syntax, constructs and calls to Java libraries to C# / .Net counterparts. Janett tries to automate this process as much as possible and preserve manual changes, making re-translation possible.

Janett takes a different way compared to JLCA:

  • It helps you to keep your main code-base on Java and translate it to .Net. It is not a tool for JUMPing.
  • It aims to translate libraries and frameworks rather than applications (Swing, JSP, EJB, ...) , however it caries out this task right.
  • It released as open source (under LGPL license), and to support open source projects.

Currently, Janett can translate Classifier4J and a lot of infrastructures are in place. Version number shows that Janett has beta quality and that there are KnownIssues, but we recommend trying Janett.

While supporting Janett, we try to translate some projects as a case. For the next release, we are going to work on some parts of Spring framework.

We invite developers to contribute and users to help us with extensibility mechanisms.

Why

We predict Java language will remain source of inspiration in open-source space for a while:

  • Mature ecosystem involves open source foundations like Apache as well as multi-billion dollar businesses
  • There are more professional developers who do open-source as a day-job
  • More universities and research institutes use Java as their projects language
  • Open source Java will probably influence this situation more

Large body of Java open source projects seems compelling in .Net. Many Java projects translated to .Net in recent years but translating manually takes days and months even for experienced developers.

Virtual machines like IKVM can not solve this problem (see IKVMCompiler)

Current Java to .Net translation tool (JLCA) only translates nearly 80% of your code so preserving manual changes is possible only for small projects (see JLCAssistant) As a result:

  • Some projects were discontinued when developers lose interest or has not enough time to contribute (e.g. NVelocity or older Lucene ports)
  • Major version changes again take long time to port (e.g. Hibernate 3)
  • Lots of interesting and well-known projects are not ported (e.g. FreeMarker)

How

Janett translates your source code through these steps:

  • Parsing Java source code to AST using infrastructure provided by NRefactory
  • Transforming constructs in Java which have no counterparts in C# (e.g. anonymous classes)
  • Refactoring code to adhere .Net conventions (making methods PascalStyle, Properties instead of accessors, ...)
  • Mapping: Replacing call to Java or other third party libraries
    • Virtualization: using java libraries provided by IKVM or J#
    • Emulation: stubbing java libraries using delegation or inheritance of .Net libraries
    • Native: replacing java libraries with .Net ones
  • In Native mode test cases may failed because replaced methods have different behavior so Correction is required:
    • Inspection and modification of resulting code with Adapter classes (see ReaderRead)
    • Stubbing some classes to be implemented from scratch (see ClassifierResourceClass)
    • Using helper classes instead of calling .Net libraries directly (see StringSplit)
  • Preserving manual changes automatically (by diff and patch) while you re-translate
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].