есть ли эффективный инструмент для преобразования кода c # в код java?

<p>есть ли эффективный инструмент для преобразования кода c # в код java?</p>

<p>я никогда не сталкивался с c # -> инструментом преобразования java. синтаксис будет достаточно простым, но рамки кардинально отличаются. даже если бы был какой-то инструмент, я бы настоятельно советовался против него. я работал над несколькими "миграционными" проектами и не могу сказать, что хотя конверсия кажется хорошим выбором, конверсионные проекты <em>всегда всегда всегда</em> превращаются в денежные ямы. это не ярлык, в итоге получается код, который не читается и не использует целевой язык. исходя из личного опыта, предположим, что перезапись является более дешевым вариантом.</p>

<p>у нас есть приложение, которое нам нужно поддерживать как в c #, так и в java. поскольку мы активно поддерживаем этот продукт, одноразовый порт не был выбран. мы исследовали net2java и инструменты mainsoft, но ни один из них не отвечал нашим требованиям (net2java из-за отсутствия надежности и mainsoft из-за стоимости и отсутствия преобразования исходного кода). мы создали наш собственный инструмент под названием <a href="http://www.cs2j.com">cs2j</a> , который запускается как часть нашего скрипта ночной сборки и очень эффективно переносит наш код c # на java. прямо сейчас это достаточно хорошо, чтобы перевести наше приложение, но предстоит пройти долгий путь, прежде чем его можно будет рассматривать как всеобъемлющий инструмент. мы предоставили лицензию на эту технологию нескольким сторонам со схожими потребностями, и нам нравится идея обнародовать ее, но наш основной бизнес в наши дни просто слишком занят.</p>

<p>этот блог <a href="http://lpeer.blogspot.com/2010/04/switching-from-c-to-java.html">сообщение</a> предлагает полезные результаты из <a href="http://www.tangiblesoftwaresolutions.com/">tangible</a> .</p>

<p>существует инструмент от microsoft для преобразования java в c #. в обратном направлении посмотрите <a href="http://www.cs2j.com/">здесь</a> и <a href="http://www.theserverside.com/news/thread.tss?thread\_id=40344">здесь</a> . если это не сработает, преобразование источника не займет слишком много времени, потому что c # и java очень похожи,</p>

<p>хотя это старый вопрос, взгляните на xmlvm <a href="http://www.xmlvm.org/clr2jvm">http://www.xmlvm.org/clr2jvm</a> , я не уверен, что он достаточно зрелый, хотя уже давно несколько лет я полагаю, что xmlvm был создан, прежде всего, для перевода android java приложений на iphone, однако его основанная на трансляции xml-фреймворка достаточно гибкая, чтобы создавать другие комбинации (см. диаграммы на сайте).</p><p>что касается причины сделать это преобразование, возможно, есть необходимость "взломать" некоторые из <a href="http://code.google.com/codesearch?hl=en&lr=&q=license%3absd|apache|mit|zlib+lang%3ac%23+game&sbtn=search">очень много кода oss</a> там и использовать его в своем/своем [java] проекте.</p><p>ура</p><p>богатые</p>

<p>попробуйте взглянуть на <a href="https://net2java.dev.java.net/index.html">net2java</a> мне кажется, это лучший вариант для автоматического (или, по крайней мере, полуавтоматического) преобразования из c # в java</p>

<p>они не конвертируются напрямую, но это обеспечивает совместимость между .net и j2ee.</p><p> <a href="http://www.mainsoft.com/products/index.aspx">http://www.mainsoft.com/products/index.aspx</a> </p>

<p>c # имеет несколько больше возможностей, чем java. возьмем, к примеру, делегатов: многие очень простые приложения на c # используют делегатов, в то время как java считают, что паттерна наблюдателя было достаточно. итак, чтобы инструмент для преобразования приложения c #, использующего делегаты, должен был бы перевести структуру из использования делегатов в реализацию шаблона наблюдателя. другая проблема заключается в том, что методы c # не являются виртуальными по умолчанию, а методы java. кроме того, java не может сделать методы не виртуальными. это создает еще одну проблему: приложение в c # может использовать поведение не виртуальных методов посредством полиморфизма таким образом, чтобы это не переводилось непосредственно в java. если вы оглянетесь вокруг, вы, вероятно, обнаружите, что существует множество инструментов для преобразования java в c #, поскольку это более простой язык (пожалуйста, не сердитесь на меня, я не сказал хуже, я сказал проще); однако вы найдете очень мало приличных инструментов, которые конвертируют c # в java.</p><p>я бы порекомендовал изменить ваш подход к конвертации с java в c #, так как это создаст меньше головной боли в долгосрочной перспективе. db4objects недавно выпустили свой внутренний инструмент, который они используют для конвертации db4o в c # для публики. это называется sharpen. если вы зарегистрировались на их сайте, вы можете просмотреть эту ссылку с инструкциями по использованию sharpen: <a href="http://developer.db4o.com/resources/view.aspx/reference/sharpen/how\_to\_setup\_sharpen">http://developer.db4o.com/resources/view.aspx/reference/sharpen/how\_to\_setup\_sharpen</a> </p><p>(я был зарегистрирован с ними некоторое время, и они хорошо о том, чтобы не спамить)</p>

<p> <a href="http://www.tangiblesoftwaresolutions.com/">эти</a> ребята, кажется, есть решение для этого, но я еще не пробовал. у них также есть демо-версия конвертера.</p>

<p>я не уверен, что вы пытаетесь сделать, желая конвертировать c # в java, но если вам нужна совместимость с .net, вы можете проверить <a href="http://www.mono-project.com/main\_page">mono</a> </p>

<p>ну, синтаксис почти одинаков, но они опираются на разные фреймворки, поэтому единственный способ конвертации - это получить кого-то, кто знает оба языка и конвертировать код :). ответ на ваш вопрос: нет, нет "эффективного" инструмента для конвертации c # на яву</p>

<p>это не так, но не для этого <a href="http://dev.mainsoft.com/default.aspx?tabid=130#what%20is%20grasshopper?">кузнечик</a> ?</p>

<p>возможно, вы могли бы использовать <a href="http://jni4net.sf.net/">jni4net - opensource bridge</a> вместо этого? или список <a href="http://jni4net.sourceforge.net/links.shtml">другие варианты</a> я знаю.</p>