Перевод .Net -> Java с помощью Grasshopper
От: 0K Ниоткуда  
Дата: 22.07.10 09:43
Оценка:
Собственно, нашел такую интересную штуковину, называется Grasshopper. Интегрируется со студией VS 2008. Автоматически делает из .Net приложений Java приложения (на уровне MSID->байт-код Java). Поддерживает только Library, Console Application и ASP.Net приложения (WinForm не поддерживает).

Создал простое ASP.Net приложение и эта хрень его перевела в Java-версию. Все MS-овские .Net библиотеки стали jar-файлами. Самое удивительное -- прекрасно работает и мало чем отличается от обычного ASP.Net приложения (в простейшем случае).

А целью моей было запустить ЭТО на Google App Engine. Но, к сожалению, пока не понятно как это сделать. Локально это Java-приложение у меня работает на сервере tomcat (Grasshopper сам установил сервер и сам все настроил). Попытался просто создать в Eclipse WebProject для GAE и тупо скопировать файлы -- не пошло (Server Error 500, чего-то там с секьюрити). Оно еще создает .war-файл. Открыл его Eclips-ом (импорт), попытался запустить -- он начал спрашивать какой сервер использовать (собственно я не знаю какой сервер использует GAE).

Кому интересна эта тема и кто хочет присоединиться к исследованиям?

Важно оно вот почему: тарифа GAE в 100 раз меньше тарифов Azure. Т.к. MS не может составить достойную конкуренцию Google а мы много лет потратили на технологии от MS -- нужно искать альтернативы.
Re: Перевод .Net -> Java с помощью Grasshopper
От: kinoman http://pseudo-tech-notes.blogspot.com/
Дата: 22.07.10 16:07
Оценка:
Здравствуйте, 0K, Вы писали:

0K>А целью моей было запустить ЭТО на Google App Engine. Но, к сожалению, пока не понятно как это сделать. Локально это Java-приложение у меня работает на сервере tomcat (Grasshopper сам установил сервер и сам все настроил). Попытался просто создать в Eclipse WebProject для GAE и тупо скопировать файлы -- не пошло (Server Error 500, чего-то там с секьюрити). Оно еще создает .war-файл. Открыл его Eclips-ом (импорт), попытался запустить -- он начал спрашивать какой сервер использовать (собственно я не знаю какой сервер использует GAE).


На GAE есть много ограничений. Вот например ссылки для ознакомления: http://code.google.com/appengine/docs/java/runtime.html, http://code.google.com/appengine/docs/java/jrewhitelist.html, http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine . Не знаю что у вас за проект, но вы уверены что он в принципе на GAE заработает? Т.е. в курсе что там sql базу например пока только обещают?

Слабо представляю зачем вам GAE если собственно с инфраструктурой GAE вы работать не будете(ну из .NET точно не сможете)...
Re[2]: Перевод .Net -> Java с помощью Grasshopper
От: 0K Ниоткуда  
Дата: 22.07.10 17:27
Оценка:
Здравствуйте, kinoman, Вы писали:

K>На GAE есть много ограничений. Вот например ссылки для ознакомления: http://code.google.com/appengine/docs/java/runtime.html, http://code.google.com/appengine/docs/java/jrewhitelist.html, http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine . Не знаю что у вас за проект, но вы уверены что он в принципе на GAE заработает?


Хотел просто пустое Web-приложение запустить для начала.

K>Т.е. в курсе что там sql базу например пока только обещают?


Можно и их существующую базу использовать. Grasshopper позволяет подключать ссылки на jar.

K>Слабо представляю зачем вам GAE если собственно с инфраструктурой GAE вы работать не будете(ну из .NET точно не сможете)...


Можно. С помощью Grasshopper можно подключать ссылки на Jar, писать на C# и оно будет компилироваться в Java. Сначала в MSIL, потом в Java.
Re[3]: Перевод .Net -> Java с помощью Grasshopper
От: kinoman http://pseudo-tech-notes.blogspot.com/
Дата: 22.07.10 18:06
Оценка:
Здравствуйте, 0K, Вы писали:

0K>Здравствуйте, kinoman, Вы писали:


K>>На GAE есть много ограничений. Вот например ссылки для ознакомления: http://code.google.com/appengine/docs/java/runtime.html, http://code.google.com/appengine/docs/java/jrewhitelist.html, http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine . Не знаю что у вас за проект, но вы уверены что он в принципе на GAE заработает?


0K>Хотел просто пустое Web-приложение запустить для начала.


Вобщем из-за этих ограничений не запускается много чего явовского. Так что возможно что и в вашем случае также (если конечно вы правильно всё собрали).

K>>Т.е. в курсе что там sql базу например пока только обещают?


0K>Можно и их существующую базу использовать. Grasshopper позволяет подключать ссылки на jar.


K>>Слабо представляю зачем вам GAE если собственно с инфраструктурой GAE вы работать не будете(ну из .NET точно не сможете)...


0K>Можно. С помощью Grasshopper можно подключать ссылки на Jar, писать на C# и оно будет компилироваться в Java. Сначала в MSIL, потом в Java.


Я ASP.Net приложений никогда не писал, но когда-то давно(в 2004 вроде году) писал на C# немного для десктопа. Из того что я помню, то сконвертить руками из C# в Java не должно быть совсем уж большой проблемой. Конечно где-то возможно потеряем в красивостях и код придётся переписать "тупо и прямо", но это лучше чем зависеть от непонятного конвертера. Я уж неговорю о невозможности использовать например JDO (правда там всё не фонтан с производительностью пока, но для среднестатистического приложения вполне нормально и сильно облегчает создание прототипа например). Ну и когда что-то будет работать неожиданно или неправильно — всегда будет мучать сомнение, а не из-за конвертера ли это... Вобщем если выбирать GAE, то лично я считаю то сконвертить проект на Java самому это наиболее правильное решение.

А кроме Азура нету облаков на которых можно запустить ASP.Net?
Re[4]: Перевод .Net -> Java с помощью Grasshopper
От: 0K Ниоткуда  
Дата: 23.07.10 04:36
Оценка:
Здравствуйте, kinoman, Вы писали:

K>Я ASP.Net приложений никогда не писал, но когда-то давно(в 2004 вроде году) писал на C# немного для десктопа. Из того что я помню, то сконвертить руками из C# в Java не должно быть совсем уж большой проблемой. ... Вобщем если выбирать GAE, то лично я считаю то сконвертить проект на Java самому это наиболее правильное решение.


Конвертировать руками -- занимает много времени. Во-первых, барахлят такие инструкции с целыми числами: http://rsdn.ru/forum/dotnet/3888792.flat.aspx
Автор: 0K
Дата: 22.07.10
(если тупо заменить все uint на int и ulong на long). Во-вторых, когда используете системные классы -- нужно искать в документации Java чем их заменить (к примеру для записи файлов или обращения к сетевому ресурсу).

K>А кроме Азура нету облаков на которых можно запустить ASP.Net?


Есть еще Amazon EC2. Но все они берут деньги за машинное время, а не за процессорное (как Google). У меня есть два простеньких сайта на GAE. Уже пол года работают -- проблем не было и ни копейки не заплатил. Если бы использовал Azure -- это бы стоило уже 500 у.е.
Re[5]: Перевод .Net -> Java с помощью Grasshopper
От: kinoman http://pseudo-tech-notes.blogspot.com/
Дата: 23.07.10 08:41
Оценка:
Здравствуйте, 0K, Вы писали:

0K>Здравствуйте, kinoman, Вы писали:


K>>Я ASP.Net приложений никогда не писал, но когда-то давно(в 2004 вроде году) писал на C# немного для десктопа. Из того что я помню, то сконвертить руками из C# в Java не должно быть совсем уж большой проблемой. ... Вобщем если выбирать GAE, то лично я считаю то сконвертить проект на Java самому это наиболее правильное решение.


0K>Конвертировать руками -- занимает много времени. Во-первых, барахлят такие инструкции с целыми числами: http://rsdn.ru/forum/dotnet/3888792.flat.aspx
Автор: 0K
Дата: 22.07.10
(если тупо заменить все uint на int и ulong на long). Во-вторых, когда используете системные классы -- нужно искать в документации Java чем их заменить (к примеру для записи файлов или обращения к сетевому ресурсу).


Ну зависит конечно от объёма. Если сотни тысяч строк, то наверное да — много времени уйдёт. Java был первый язык по которому я начал читать какие-то книжки уже после написания нескольких приложений. Никаких проблем чтобы найти то что нужно не было. Собственно весь базис который нужен есть здесь наверное: http://download.oracle.com/docs/cd/E17409_01/javase/tutorial/index.html .

Ну что-то совсем гладко не сконвертится понятное дело. Но без посредника в виде конвертера это по крайней мере легко доработать руками.

K>>А кроме Азура нету облаков на которых можно запустить ASP.Net?


0K>Есть еще Amazon EC2. Но все они берут деньги за машинное время, а не за процессорное (как Google). У меня есть два простеньких сайта на GAE. Уже пол года работают -- проблем не было и ни копейки не заплатил. Если бы использовал Azure -- это бы стоило уже 500 у.е.


Понятно. Ну у меня есть больше чем два простеньких сайта на GAE, и под нагрузкой там приходится очень сильно сражаться оптимизируя и вылизывая всё. Как бы я это делал работая с конвертером — не представляю. Точнее представляю примерно, но процесс был бы раз в 10 медленнее.

Вобщем лично я без понятия как у вас там работает ASP.Net, но на выходе конвертера наверное должно получится что-то с сервлетами. У вас web.xml файл есть там на выходе? Куда-нибудь выложить можете его?
Re[6]: Перевод .Net -> Java с помощью Grasshopper
От: 0K Ниоткуда  
Дата: 23.07.10 10:11
Оценка:
Здравствуйте, kinoman, Вы писали:

K>Вобщем лично я без понятия как у вас там работает ASP.Net, но на выходе конвертера наверное должно получится что-то с сервлетами. У вас web.xml файл есть там на выходе? Куда-нибудь выложить можете его?


Да, есть там Web.xml. Проект у меня на другом компе, он отключен. Напишу по памяти.

В Web.xml, насколько я понял, определен обработчик запросов. Определены все расширения серверных страниц и кто какое расширение обрабатывает (все что используется в ASP.Net: aspx, ashx, asmx...). Кроме того, в папке libs около 22 МБт разных .jar файлов -- все нужные библиотеки .Net в java вариенте (как я не пытался уменьшить их количество -- не получилось).
Re[7]: Перевод .Net -> Java с помощью Grasshopper
От: kinoman http://pseudo-tech-notes.blogspot.com/
Дата: 23.07.10 10:28
Оценка:
Здравствуйте, 0K, Вы писали:

0K>Здравствуйте, kinoman, Вы писали:


K>>Вобщем лично я без понятия как у вас там работает ASP.Net, но на выходе конвертера наверное должно получится что-то с сервлетами. У вас web.xml файл есть там на выходе? Куда-нибудь выложить можете его?


0K>Да, есть там Web.xml. Проект у меня на другом компе, он отключен. Напишу по памяти.


0K>В Web.xml, насколько я понял, определен обработчик запросов. Определены все расширения серверных страниц и кто какое расширение обрабатывает (все что используется в ASP.Net: aspx, ashx, asmx...). Кроме того, в папке libs около 22 МБт разных .jar файлов -- все нужные библиотеки .Net в java вариенте (как я не пытался уменьшить их количество -- не получилось).


Ну вобщем надо слить этот web.xml с дефолным из gae(хотя я не помню прописано ли там вообще чего-нибудь полезное — но может и прописано). И закинуть то что в папке libs в папку war/WEB-INF/lib . И желательно описать подробнее ошибку "(Server Error 500, чего-то там с секьюрити)" если она повторится.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.