Microsoft предоставляет поклонникам Java возможность перехода на .Net

Первый предварительный вариант J#, вошедший в состав второй бета-версии пакета Visual Studio.Net, выглядит совсем неплохо и вполне может претендовать на статус готового продукта
Microsoft представила очередное дополнение к созвездию языков программирования для платформы .Net. Этим дополнением стал язык J# (произносится «джей-диез». — Прим. Перев.). Хотя J# и не является Java в полном смысле этого слова, он тем не менее поддерживает все базовые спецификации этого языка, разработанные корпорацией Sun Microsystems, и после простой перекомпиляции или преобразования двоичного кода совместим со многими из существующих приложений Java.

Однако код J# не работает на виртуальных машинах Java и не обладает возможностями исполняемой среды, которые появились в версиях инструментального пакета Sun Java SDK старше 1.1.4. Microsoft делает ставку на то, что различия между Java и J# будут очевидны для обвинителей и адвокатов, и надеется, что J# сможет составить серьезную конкуренцию Java.

Создавая J#, Microsoft преследовала две цели: протянуть руку помощи попавшим в трудное положение разработчикам на Visual J++, а также предоставить всем остальным поклонникам Java возможность простого перехода на платформу .Net. Пообещав сохранить набор функций VJ++ (а большая их часть уже реализована в бета-версии), корпорация пытается отвоевать для пользователей VJ++ плацдарм для новой атаки. Однако Microsoft будет довольно трудно убедить разработчиков в том, что они смогут прожить без совместимости с J2EE, JDK (Java Development Kit) 1.2 и 1.3 и без независимости от конкретной платформы.

Авторы уже завоевавшей популярность среды VJ++ сумели переманить на свою сторону многих программистов, которые начали писать приложения Java, работающие только под управлением Windows. Будет ли J# обладать такой же магической притягательной силой, как и платформа .Net?

Первый предварительный вариант J#, вошедший в состав второй бета-версии пакета Visual Studio.Net, выглядит совсем неплохо и вполне может, претендовать на статус готового продукта. Так же как и у других языков .Net, текст программы на J# компилируется в промежуточный код MSIL (Microsoft intermediate language).

Компилятор J# не генерирует файлов байт-кода Java, поэтому приложения J# не могут выполняться вне среды .Net. Кроме того, в проектах J# нельзя использовать готовые скомпилированные файлы классов Java, поскольку исполняемая среда .Net не понимает байт-кода Java.

Если у вас нет исходного кода необходимых вам классов Java, помочь вам сможет только конвертер байт-кода Microsoft. Эта утилита транслирует байт-код Java в MSIL, выдавая на выходе скомпилированный для работы в среде .Net код Java.

Подобное преобразование нельзя выполнить непосредственно во время выполнения программы.

Через конвертер предварительно необходимо прогнать все классы Java, которые вы собираетесь использовать. В результате класс трансформируется в код, понятный .Net.

Его можно вызывать из программ, написанных на J# или на любом другом языке .Net. Процедура преобразования выполняется очень быстро. Конвертер обрабатывает все шаблоны имен файлов и просматривает подкаталоги, упрощая таким образом пакетную сборку наборов классов Java.

Я заметил, что компилятор J# воспринимал код Java, не удовлетворяющий спецификациям J2EE, до тех пор, пока в него не включались функции JDK 1.2 и более поздних версий. Разработчики Microsoft предлагают компоненты, реализующие функциональность Sun JDK 1.1.4 без использования какого-либо кода Sun.

Таким образом, Microsoft рассчитывает уйти из-под контроля Sun и избежать юридических обвинений в свой адрес. Кроме того, J# поддерживает расширения языка Java, имеющиеся в VJ++, в том числе объекты компонентной модели COM и интерфейс кода J/Direct. Это упрощает перевод проектов VJ++ на платформу J#.

Я попытался открыть несколько несложных проектов VJ++ в среде Visual Studio.Net Beta 2 и преобразовал их в формат J#, выполнив обычную перекомпиляцию.

Степень совместимости с VJ++ для бета-версии выглядит весьма впечатляюще.

Испытания бета-версии J# дали в основном позитивные результаты, которые вполне соответствовали задачам этого языка и наложенным на него ограничениям. Перевод проектов VJ++ в среду J# оказался успешным, а после выхода окончательной версии разработчики наверняка смогут переносить на платформу .Net даже большие и сложные проекты VJ++.

Основными пользователями J#, скорее всего, станут привыкшие не выходить за пределы базовых конструкций Java программисты, перед которыми стоит задача написания приложений для Microsoft .Net и которые отдают предпочтение ограничениям J# перед более выразительными и удобными средствами C#.

Но при всей своей любви к Java я не увидел в бета-версии ничего такого, что заставило бы нас отказаться от использования C# при создании приложений для .Net.


Подводя черту

Visual J#.Net, бета-версия

Продукт Visual J#.Net обеспечивает простой перенос проектов VJ++ на платформу .Net и предназначен для разработки новых приложений .Net на языке Java. Средства J# способны компилировать и конвертировать очень широкий набор приложений Java. В долгосрочной перспективе J# станет конкурентом Java, точно так же как .Net является конкурентом J2EE.

  • Достоинства: полная реализация базовых спецификаций языка Java; собственная поддержка классов JDK 1.1.4; конвертер преобразует скомпилированный код Java в двоичный код .Net
  • Недостатки: поддержка JDK ограничена функциями версии 1.1.4; в языке не заложена возможность определения ключевых конструкций .Net; скомпилированные приложения выполняются только в среде Windows
  • Цена: не объявлена
  • Платформы: 32-разрядные системы Windows, на которых установлено программное обеспечение Visual Studio.Net Beta 2
  • Поставки: срок появления коммерческой версии не определен