Возможно ли скрестить C# и Java (.NET и JVM)?
В описании новой версии Visual Studio указано, что она начинает поддерживать язык Java. кроме того часть библиотек .net открываются в Open source. Интересно, возможно ли (частичное) объединение этих двух гигантских платформ? Возможны ли варианты параллельного использования библиотек Java и .NET?
59 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівuk.wikipedia.org/wiki/CORBA
Мы используем www.ikvm.net для компиляции java кода в clr
Уже сто лет как совмещают, в виде бэкенда на джаве и толстого клиента на диезе.
А який в цьому сенс? Не можу уявити в свої голові очевидних плюсів.
Ну типа джава неплоха для серверсайда, а .нет для толстого дектопного приложения.
Хотя я бы наверное писал бы все на .нете.
Ну, автор мав на увазі щось глобальніше.
Автор комента(Yegor Chumakov) на который ты ответил думаю имел в виду именно это.
Когда денех нет на серверные лицензии, «а в люди — хочется» :)
как уже писали, джава проверенный годами инструмент хорошего бэкенда (хотя я бы поспорил, имхо использовать весь стек microsoft для бэка все же быстрее и в перспективе надежнее имхо. но я дотнет инжыньор, мной управляет многомиллиардная корпорация и я не верю в опенсорс :) ). а на дотнете быстро формошлепится красивый клиент любой степени толщины (как на wcf для декстопа которым таки пользуются, так и на asp.net для веба. можно даже ангуляр прикрутить). очевидный плюс — скорость разработки, красота ui.
але коли певний організм, що вважає себе високорозвиненим, не здатний прочитати 2 букви, 2 БУКВИ КАРЛ!!!, по правилах англіської мови — що тут ще можна подумати?
А что не так с До диезом?
можливо те що ми не в музичній школі, і в межах нашої галузі, та тим більше назви мови — написано зовсім інше?
C# на английском и обозначает До диез, не вижу пролему так его переводить, хотя сам так не говорю. А когда читал свою первую книгу и не знал как название языка правильно произносится про себя так и называл его — До диез.
en.wikipedia.org/wiki/C♯_(musical_note
ми точно тут про одну англіську тут говорим? чи «все що не зрозуміле і латинкою — певно англіська»?
Ну так приведенная статья как раз на английском. А еще микрософт много просил понимать/называть симол «#» (number sign) как музыкальный «♯» (sharp) просто потому, что его проще набирать на клавиатуре.
відчуваєте різницю,
та?
чи на англіській в музиці це все ж сі шарп, як стаття пише?
Именно: на английском — Си шапр, на русском — До диез. Во фразе
имелся в виду как раз перевод на русский. Ветка ведь о переводе.крім того по правилах більшості мов світу власні назви не перекладаються.
бачите десь в мові нотний ключ чи конвейерні стрічки? якщо ні, то далі називайте відповідно контексту і без лівакових «перекладів» ;)
Написали б «ява» — пропустив би повз вуха. А тут твою улуюблену технологію неправильно назвали... ойойой...
писати нью-йорк транслітом, це одна річ, а перекладати шарп чимось іншим, сильно смахує на традиції неіснуючого «древнеруського государства» з ВВХ на чолі, від чого є сенс рухатись в сторону світових тенденцій, а не назад, в жопу ;)
Опять. Она уже один раз поддерживала Джаву (J#) ничего толкового не вышло.
Не вышло потому, что Sun решила засудить их за использование Java:
www.javaworld.com/...-settle-java-lawsuit.html
Если бы не это — то язык C# вообще не возник бы. И Java была бы основным языком. Между прочим Java от MS была вполне прогрессивной на то время:
en.wikipedia.org/wiki/Visual_J+
Гораздо проще чем С++ и намного продвинутее VB (туда ему и дорога).
Я не про J++ и Майкрософт Джава. Я про J#, который возник уже после C#.
Сан их судил потому что МС пилил «немного другую» джаву, а сан требовал соответствия стандартам.
Вопрос не в этом, вопрос в том почему Эппл договорился, а МС нет. Мое предположение: потому что МС не собирался договариваться, а в основном диктовать условия.
Програмы разные были, вон IDEA была на свинг написана. А МС вроде руководствовался другими мотивами.
Верю на слово, но МС стал пытаться вставлять в свою Джаву конструкции, которых не было в стандарте, и которые работали только на МС Джава. Они вообще любят перехватывать контроль над стандартами. Порядка ради, иногда — очень удачно. AJAX из Ишака пошёл, если я не ошибаюсь.
Можно. Но вопрос ЗАЧЕМ?
Хаскель не забудьте
А зачем? Я в этом не вижу смысла. Проще интегрировать компоненты через веб-сервисы, базу или систему обмена сообщениями. Но скрещивать бульдога с носорогом? ))
Тут будут проблемы из-за того, что байткод JVM не поддерживает обобщения. А наоборот можно, вроде даже была попытка J#.
Нерешаемо, дотнетовская рефлексия на JVM полноценно работать не будет. Порядка ради — она очень редко нужна. Я как то писал под MonoTooch и там был здоровый док, чего их реализация дотнета не поддерживает, типа абсолютно других строк (там они — символьные массивы), нерабочие обощённые конструктора и тому подобная мелочёвка. Если реализовать дотнет под JVM — получится так же.
А зачем вообще запускать .net под JVM, если уж на то пошло? Если нужны мобилки и Линух — есть Ксамарин. Единственное, что я могу придумать — это хочется использовать Джавовский фреймвёрк под дотнетом, так хочется аж кушать не можешь. Но тогда проще просто портировать фреймвёрк.
Заопенсорси, может и взлетит
отсюда поподробней можно?
спасибо, но кажется, что у меня личка не работает — я даже ее найти не могу
если это не секрет — может здесь написать? по-любому, не только мне интересно
Оно на твое мыло должно отправиться, которое ты указал при регистрации.
спасибо, нашел, оно было в спаме
В одном приложении (одном процессе) совместить .Net и JVM проблематично. А главное — бесполезно.
В то же время написать разные модули на C# и Java вполне реально. Надо только выбрать как обмениваться данными. Мы вполне успешно использовали Solr сервер (Java) из ASP.Net приложения.
Java изначально кросс-платформенная. .Net становится частично кросс-платформенным с новой версии. Так что на одной платформе то же можно совместить.
Если же хочется просто совместить два языка (без библиотек) — то есть решения для добавления Java в Visual Studio и компиляцию наравне с C#.
Насколько я видел в опенсорсе чаще идут по пути форканья на другом языке. Благо можно автоматически сконвертировать синтаксис Java в С# и наоборот.
Таки вы курили этот Ксамарин? У него есть ограничения. По крайней мере у Ксамарин.ИОС.
таки я на нем работал. что именно не получилось сделать?
Всё получилось. Просто там был док со списком ограничений. Так что Моно-Тач — это ДотНет процентов на 98, но не на сто.
стоит вспомнить, на обычном дотнет (без всяких моно) используются ли возможности языка и платформы на все 100%? или все ограничивается дженериками и линком? по моей практике, рефлексию использовал в йуности.
на монотаче я только ковырялся, в продакшен проект не писал, но огорчил только сборщик мусора. но это бока самой яблочной платформы, что они не придумали няшный автоматический сборщик для ленивых формошлепов :3
по производительности, кстати, уперся только в гуглокартах. там надо было рисовать 500 пинов инфа по которым тянулась и базы данных. увы, так и не успел разобраться с тем как линковать нативные андроид библиотеки (группировка пинов не входит в те которые уже слинкованы разработчиками ксамарина)
В интернете полно проектов по запуску байткода Java на CLR и наоборот. Вот только совместимость библиотек очень низкая: типы данных слишком разные.
String в C# и String в Java — в таких проектах — это разные типы. Значит при каждом кросвызове надо в ручную конвертировать типы одной платформы в другую. В общем куча головняка на ровном месте.
Без страшных мук врядли.
1 слишком разные архитектуры и подходы к виртуализации у JVM и CLR .NET
1а разный байт код
Можно ли создать WINE в одной среде, для выполнения кода другой среды? Можно.
Но, с какой целью, и кому это нужно?
Зачем?