« Поставить закладку » « Сделать стартовой »

« Форумы » « Блоги » « Статьи » « Новости » « Файлы » « Realcoding IRC » « Site map » « Поиск »


Главная Главная
Анонсы Анонсы
Форумы Форумы
Каталог Каталог
Поиск Поиск
Опросы Опросы
Книжный магазин Книжный магазин
Реклама на сайте
Публикации Публикации
Партнеры Партнеры
Карта Карта сайта
Рассылки Рассылки
RSS экспорт
Настройки Настройки
О нас пишут О нас пишут
Контакты Контакты
Гостевая книга Гостевая книга



ПнВтСрЧтПтСбВс
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
    Популярное
Функция AccessResource

Функция TabbedTextOut

Создание мобильных WAP сайтов

Глава 1. Введение

CSS от А до Я 2

Описание функций C (Си) / C++ - fdopen

Компонент программиста

Почтовые функции в РНР

Цикл от человека - Рекурсия от Бога .

Объявление записи




    Архив файлов



    Сообщества

    Документация

    Кто на сайте
Вы не зарегистрированы.
Имя:

Пароль:

Запомнить

Регистрация позволит Вам пользоваться дополнительными сервисами.
Сейчас на сайте:
Гостей: 178
Пользователей: 0

Статьи:: Интернет технологии :: Технология JAVA :: Java Language Convertion Assistant 3.0. Портируем Java на C#



отправить ссылку другу версия для печати  Обсудить на форуме

Java Language Convertion Assistant 3.0. Портируем Java на C#

 

Введение

Зачастую задачи, с которыми приходится сталкиваться программистам, не уникальны. На сегодняшний день поговорка "все уже написано до нас" действительно имеет место: достаточно заглянуть на такой небезызвестный ресурс, как SourceForge.net , который взял под крыло большинство open source разработок. Казалось бы, дело за малым: нужно всего лишь адаптировать имеющийся исходный код под свои нужды. Но вот именно сам процесс адаптации и является наиболее болезненным, ибо, как вы сами понимаете, подходящий по функциональности проект может быть написан на неподходящем языке, да еще и под другую платформу. Самый печальный исход самоочевиден: потребуется переписывать код с учетом специфики сложившихся обстоятельств. Но считайте, что вам крупно повезло, если вы мало того, что .NET-разработчик, так еще и решили портировать код с Java. Microsoft всегда рада помочь вам "завязать" с конкурирующей платформой от Sun. Для этого у ребят из Редмонда припасена специализированная утилита под названием Java Language Convertion Assistant, которая на данный момент доросла до версии 3.0. Поразительно, но на таких популярных сайтах Рунета, как GotDotNet.ru и RSDN.ru JLCA вообще ни разу не упоминается. Это обстоятельство и побудило меня написать сей обзорчик.



Необходимые приготовления

Разумеется, первым делом необходимо раздобыть собственно JLCA. Дистрибутив Visual Studio 2003 включает в себя первую версию мастера. С сайта Microsoft удается выудить версии 2.0 и 3.0 Beta. Как это ни парадоксально звучит, для работы не годится ни одна из них. Сейчас объясню, почему. По задумке JLCA предназначалась для комфортной пересадки J++ программистов, которые по большому счету оставались не у дел, на C# .NET. Для нас же J++ интереса не представляет: нам требуется поддержка Java 1.4, а значит, все версии младше третьей отпадают сами собой. Логичным кандидатом мог бы стать JLCA 3.0 Beta, но работает он настолько нестабильно, что первая же попытка конвертации закончилась BSOD — и это на Windows Server 2003! Довести же конвертацию до конца мастер не смог ни разу! Другой на моем месте уже бы бился головой об стенку, но только не я. А знаете, почему? Потому, что у меня есть Visual Studio 2005 Beta 2 — самая стабильная бета от Microsoft, которую мне когда-либо доводилось держать в руках. Оказывается, именно в эту версию IDE включен _рабочий_ мастер JLCA 3.0. Достать Visual Studio 2005 Beta 2 сейчас уже сложнее, чем месяц назад. Дело в том, что халява с бесплатной раздачей коробок закончилась, и теперь за доставку требуют $13. Не исключено, что вам удастся отделаться Visual C# 2005 Express Edition, которую можно по-прежнему бесплатно выкачать с сайта Microsoft, но ничего конкретного по этому поводу я вам сказать не могу: у меня попросту нету на руках этого дистрибутива. Судя по официальной документации, JLCA 3.0 поддерживает лишь Java 1.3, но у меня не возникло проблем при конвертации проекта, написанного с использованием Java SDK 1.4.

N.B. Сейчас флагманом Sun является уже Java 1.5, но работа JLCA в таких условиях мною не проверялась.

Заполучить Java SDK можно либо скачав его из Интернета (для JDK 1.4 размер установщика составляет 45 Mb), либо купив диск с записанным пакетом у ближайшего лоточника. Как только вы установите SDK, зайдите в директорию установки. Здесь вам должен броситься в глаза архивчик src.zip. Распаковываем его здесь же в поддиректорию src, где будут аккуратненько уложены исходники Java-классов, чья иерархическая структура и названия весьма схожи с таковыми в .NET Framework.

N.B. Правда, чтобы изучить внутренности классов .NET Framework, приходится прибегать к услугам утилит наподобие Reflector .NET сайт .

Будем надеяться, Visual Studio 2005 и JDK 1.4 успешно установились на вашей машине. Что ж, без лишних экивоков предлагаю посмотреть на нашего ассистента в действии.

Пуск

JLCA представляет собой мастера, интегрирующегося в Visual Studio. Сидит он в меню File -> Open -> Convert... Чтобы развеять скуку мастеру, рядом с ним посадили еще одного, предназначенного для конвертации проектов Visual Basic 6.0.

 

Жмем кнопку Next. Перед нами раскрывается приветствующее окно мастера, где расписывается, какой он весь из себя умелый. И действительно, мастер может даже то, чего от него и не ждали. А именно осуществляются следующие преобразования:

AWT/Swing -> Windows/Web Forms
RMI -> .NET Remoting
JNDI -> .NET Directory Services
JSP -> ASP
EJB -> COM
JDBC -> ODBC

N.B. Думаю, даже самые завзятые скептики не удержатся от восхищения. Такие возможности реализованы благодаря тому, что JLCA не просто поочередно разбирает файлы и конвертирует языковые конструкции, а производит анализ доступного исходного кода, вследствие чего объем свободной оперативной памяти играет решающую роль, и желательно, чтобы RAM было не меньше 256 Mb.

Далее говорим мастеру, что у нас есть директория с файлами проекта, а с J++ дело иметь не хотим. На следующем шаге указываем эту самую директорию. Обратите внимание на нижнее текстовое поле, куда стоит добавить путь (пути) к дополнительным файлам для обработки. В нашем случае это путь к файлам JDK 1.4. На четвертом шаге нужно указать имя нового проекта и его тип. По первости еще при экспериментах с JLCA 3.0 Beta, выбрав "неправильный" тип проекта, я и вывалился в синий экран. Пятая страница просит показать, куда складывать портированные файлы. Наконец, последнее диалоговое окно показывает все выбранные вами параметры. Просмотрите их на всякий случай (вдруг заметите ошибку) — и щелкайте по кнопке Finish. Теперь в дело вступает автоматика. Процесс этот может оказаться относительно продолжительным. Так, 2 Mb исходников + SDK (файлы из директории src, на которые есть ссылки в проекте, тоже обрабатываются) моя машина (Athlon XP 2200, 1 Gb RAM) "перемолола" за пять минут. Чтобы вы могли представить себе, что такое 2 Mb исходников, доложу, что файл на 2.000 строк кода занимает примерно 200 Kb. А теперь представьте, сколько бы вы затратили времени на "перепахивание" без малого 20 тысяч строк. Уверен, такая работа стоит гораздо больше тех $13, которые нынче просят за VS2005 Beta 2. На выходе имеем портированный проект C# 2005 со всей полагающейся атрибутикой, как-то: файл проекта (*.csproj), информация о сборке (AssemblyInfo.cs), отчет об ошибках (см. ниже) плюс сразу выделяющийся своей непривычностью некий
SupportClass.cs. Этот класс, как оказалось, эмулирует работу тех методов, которым не нашлось аналогов в FCL. Однако нас прямым текстом предупреждают, что логика может быть не 100% идентичной. Преимущество конвертера заключается в том, что он не трогает того, чего не понимает. Поэтому сохраняются все комментарии, а в директорию проекта без изменений копируются, например, html-файлы документации.

N.B. Стоит отметить, что конвертер не поддерживает некоторые пакеты, например, javax.imageio, в силу существенных различий между Java 2D API и System.Drawing. В подобных случаях мастер также оставляет код без изменений, предоставляя вам возможность разобраться, в чем тут дело, самостоятельно. Благо переписывать с нуля придется лишь очень небольшой процент кода.

Завершает свою работу ассистент отчетом об ошибках и предупреждениях. Если вы когда-нибудь занимались портированием VB .NET на C# (или наоборот) с помощью SharpDevelop, то не понаслышке знаете, что компилируется получаемый код далеко не всегда, и его необходимо вручную доводить до ума. При таких же глобальных преобразованиях ожидать от мастера сразу же компилируемого кода было бы по меньшей мере самонадеянно. Ошибки заключаются в том, что мастер просит вас, например, пересмотреть некоторый участок кода, где в результате конвертации могла нарушиться логика алгоритма, т.к. поведение соответствующих классов обеих платформ может несколько разниться. В коде все "недоразумения" снабжены ссылками на соответствующий раздел MSDN, где описано, что необходимо сделать для устранения ошибки.

Делаем выводы

JLCA 3.0 способен кардинально уменьшить количество человекочасов на портирование проекта. То, на что раньше уходили недели и месяцы, теперь занимает считаные минуты. Все, что осталось сделать — это подправить мелкие недочеты, и дело в шляпе — проект снова с вами, только уже на вашей любимой платформе Microsoft .NET.

Автор: Alex Nesterov
Опубликовано: 14.08.2005
Источник: "Компьютерная газета"
 




Рубрика: Технология JAVA




Подгрузка через AJAX HTML-кода, содержащег....

AJAX

При разработке CMS S.Builder наша команда активно использовала AJAX. Теперь вот решили поделиться накопленным опытом. Начнем с этого хабратопика. Не буду здесь затрагивать различные фреймворки и библиотеки. Свой код всегда роднее. Для работы с AJAX-ом в S.Builder написана библиотека sbAJAX. Можете качать и пользоваться :). В этом файле есть функция sbEvalJS. Для тех, кто не знает, объясню. При подгрузке через AJAX и вставке на страницу HTML-кода, содержащего JavaScript, JavaScript выполняться не будет или полезут баги. Эта функция как раз решает поставленную задачу.


Подробнее... | Рубрика: AJAX | Добавлено: 19.11.2008

Обзор нового релиза самой мощной Ajax библ....

AJAX

Хотя наш обзор немного запоздал, оригинальный Dojo 1.2 вышел в релизной версии ещё 6-го октября, но сейчас мы наверстаем упущенное. И так, Dojo Toolkit — это самая мощная и гибкая ajax-библиотека из всех, что есть на рынке, она активно развивается и имеет большое комьюнити. Кстати, это самое комьюнити, совместно с компанией Sitepen, имеет ещё несколько проектов, среди которых и Cometd и некоторые другие, не менее интересные, о которых мы скоро вам расскажем. Сегодня же все внимание на флагманский продукт — Dojo 1.2.


Подробнее... | Рубрика: AJAX | Добавлено: 19.11.2008

Firebug 1.3 и 1.4 alpha — что нового и инт....

Вебмастеру

Если вы профессиональный веб-разработчик и постоянно имеете дело с разработкой и отладкой сложных AJAX приложений, то наверняка знаете и используете Firebug — плагин для браузера Firefox, предназначенный для отладки и исследования веб-приложений. Текущая его версия, 1.2х достаточно стабильная и функциональна, чтобы помочь в 99% проблем, которые могут возникнуть при разработке. Но и этот инструмент не лишён если не недостатков, то некоторых фич, которые могли бы облегчить работу. И даже идеальный инструмент можно сделать ещё более идеальным, как бы это не звучало.


Подробнее... | Рубрика: Вебмастеру | Добавлено: 19.11.2008

Остальные статьи:

Релиз Microsoft Silverlight 2.0. Что новог...
XML документация в C#
Курсоры в MySQL 5
Microsoft опубликовала подробности о сесси...
Microsoft делится подробностями о том, что...
Тестируем новый javascript от нового брауз...
MySQL Query Cache
Использование провайдеров компиляции в As...
Чего мы ждем от C# 4.0
Delphi 2009 и C++Builder 2009
Джоэл Спольски и Джеф Этвуд запустили новы...
Поиск кода Google /* что нового? */
10 jQuery скриптов для улучшения интерфейс...
Генераторы отчетов FastReport 4 и QuickRep...
День программиста — набор стерeотипов
Индусские програмисты
Вышел Django 1.0
Портативная версия Google Chrome Portable
Исходные коды .Net Frameword 3.5 SP1 для о...
Пишем правильный online WYSIWYG-редактор


Цитата дня (все,добавить):

Портал фрилансеров

работа на дому


    Рубрикатор

Программирование

C/С++
Обучение
Windows API
XAML
Моделирование
Паттерны
Visual Basic 7 .NET
WxWidgets
Функции WinApi
Функции С++
Разработка под Mac OS
Eiffel
Visual Studio 2008
UI дизайн
Алгоритмы
Конкурсные статьи
Turbo Pascal
Visual Studio
CASE-средства
Visual Studio 2005
Без VCL
Delphi
Тех. документация
Тестирование
Software Testing
ООП
TCP/IP
Google Android
Windows Installer
.NET Framework
Драйвера
C# C Sharp
Справка
Проектирование
Информ. системы
Visual Basic
Assembler
Оптимизация кода
Gtk+
Компоненты
Реинжиниринг
Управление проектами
Extreeme programming
Lotus Notes
Алгебраическое проектирование


Интернет технологии

PHP
Perl
ASP
WAP
Cookies
SSI
CGI
Web Servers
VB Script
DNS
CSS
XML
Html
Java Script
Java2ME
Firewall
Flash
.htaccess
Apache
VRML
Протоколы
Поисковые системы
Технология JAVA
Учебник по PHP
Учебник по JavaScript
Учебник по XML
Java Q&A
AJAX
DHTML
XHTML
Dreamweaver
Web 2.0
Python
Вебмастеру
Cisco
Ruby on Rails
Silverlight

Базы данных

Access
InterBase
MySQL
Oracle
ADO .NET
Основы SQL
Учебник по Access 2002
MS
Microsoft FoxPro
Доступ к данным
XML в MS SQL Server 2000
ODBC и MyODBC
Обучение
Caché
DB2
PostgresSQL
Sybase
Теория
Хранилища данных
Безопасность
Реляционные данные
MySQL и mSQL

Остальное:

Разное
Обзоры книг
Безопасность
Графика и дизайн
Юмор
Linux
Фракталы
Microsoft Axapta
Многоядерность
Сети
Microsoft Office
Работа
MS-DOS
Криптография
Графика и игроделание
Новости SDK
Системы защиты
Учебник по AutoCad
CVS
Windows XP
Windows Server 2003
Windows Vista
Windows 7
Мероприятия