Using java class in net

Русские Блоги

Используя классы Java в вашем приложении .NET (используя класс Java в программе .NET)

Introduction

Suppose you have been asked to migrate an existing multi-tier application to .NET where the business layer is written in Java. Normally you would have no option but to recode and port the entire application to any .NET language (e.g. C#). However this is where IKVM.NET comes to the rescue.

IKVM.NET is an open source implementation of Java for Mono /Microsoft .NET Framework and makes it possible both to develop .NET applications in Java, and to use existing Java API’s and libraries in applications written in any .NET language. It is written in C# and the executables, documentation and source code can be downloaded from here.

IKVM.NET consists of the following three main parts:

  1. A Java Virtual Machine implemented in .NET
  2. A .NET implementation of the Java class libraries
  3. Tools that enable Java and .NET interoperability

However before we get any further into this topic, let’s discuss about few of the main components of the IKVM.NET package which we would be using later in this article.

  • IKVM.Runtime.dll: The VM runtime and all supporting code containing the byte code JIT compiler/verifier, object model remapping infrastructure and the managed .NET re-implementations of the native methods in Classpath.
  • IKVM.GNU.Classpath.dll: Compiled version of GNU Classpath, the Free Software Foundation’s implementation of the Java class libraries, plus some additional IKVM.NET specific code.
  • ikvm.exe: Starter executable, comparable to java.exe («dynamic mode»).
  • ikvmc.exe: Static compiler. Used to compile Java classes and jars into a .NET assembly («static mode»).
Читайте также:  Белым по черному html

Now back to our problem of migrating the existing Java business classes so that they can be accessed by the newly proposed .NET application. We would also like to use the various existing Java API and libraries in our .NET application. Let’s start by doing just that.

Setting Up IKVM.NET

Download the binary distribution from the sourceforge site and unzip the contents to C:\ikvm (or X:\ikvm where X is your drive). You would find the ikvm executables and DLLs in the C:\ikvm\bin directory. Open a command or shell window, cd to C:\ikvm\bin, and type ‘ikvm’.

If your system is operating correctly, you should see the following output:

usage: ikvm [-options] [args. ] (to execute a class) or ikvm -jar [-options] [args. ] (to execute a jar file)

For Linux based systems, the setup is similar as above. This is all you need to do for running the demo application.

Our Demo Java Business Class (JavaToNet.java)

Collapse Copy Code

public class JavaToNet < public static void main(String[] args) < System.out.println("This is a demonstration Program which\n"); System.out.println("shows the conversion of Java class to\n"); System.out.println("a .NET dll\n"); > public static double AddNumbers(double a,double b)< double c = 0; c = a + b; return c; > public static double SubNumbers(double a,double b)< double c = 0; c = a - b; return c; > public static double MulNumbers(double a,double b)< double c = 0; c = a * b; return c; > public static double DivNumbers(double a,double b)< double c = 0; c = a / b; return c; > >

Our Java class is very simple. It has four functions for add, subtract, multiply and divide that take two double values and return a result. Our objective is to access these functions through our C# application. Compile the above Java file to get the JavaToNet.class. We will use this Java class file to generate the .NET DLL to be referenced in our C# program.

Using IKVM.NET to Convert Java Class to .NET DLL

Copy the above Java class file (JavaToNet.class) to the C:\ikvm\bin directory. Now run the following command:

This would create the JavaToNet.dll from the JavaToNet.class file. There are other command line option for ikvmc.exe. For example: ‘ ikvmc –target:exe javaToNet. class ’ would create an EXE and not a DLL. You can get all the options by typing ‘ikvmc’ in the command line.

Setting Up Your .NET Development Environment

  1. Start by creating a C# Windows application project.
  2. Drag and drop controls into the form as shown:
  3. Add the following DLLs as references to the project. Both DLLs are present in the C:\ikvm\bin folder.
    • JavaToNet.dll
    • IKVM.GNU.Classpath.dll
  4. Add the following code to the button click event of the ‘Calculate’ button:

Collapse Copy Code

private void btnCal_Click(object sender, System.EventArgs e) < if (rdAdd.Checked == true) < txtResult.Text = Convert.ToString(JavaToNet.AddNumbers (Convert.ToDouble(txtNum1.Text),Convert.ToDouble(txtNum2.Text))); >else if (rdSub.Checked ==true) < txtResult.Text = Convert.ToString(JavaToNet.SubNumbers (Convert.ToDouble(txtNum1.Text),Convert.ToDouble(txtNum2.Text))); >else if (rdMul.Checked == true) < txtResult.Text = Convert.ToString(JavaToNet.MulNumbers (Convert.ToDouble(txtNum1.Text),Convert.ToDouble(txtNum2.Text))); >else < txtResult.Text = Convert.ToString(JavaToNet.DivNumbers (Convert.ToDouble(txtNum1.Text),Convert.ToDouble(txtNum2.Text))); >>

Collapse Copy Code

using TimeZone = java.util.TimeZone;

Collapse Copy Code

private void btnTimeZone_Click(object sender, System.EventArgs e)

  • Compile and run the application. The C# application would now call the AddNumbers() , SubNumbers() , MulNumbers() and DivNumbers() functions present in the JavaToNet.dll and return the result.
  • Click on the ‘Time Zone’ button. The application accesses the java.util.TimeZone class and displays the exact time zone of the place.
  • Conclusion

    Since these methods had originally been written in Java, IKVM.NET provides us an easy and viable way to access those classes and methods from a .NET application. Similarly as shown above in the ‘Time Zone’ example, you can access most of the existing Java packages (e.g. java.io, java.util, etc.) and use them in your application.

    However there are certain drawbacks. IKVM.NET, while still being actively developed, has limited support for AWT classes and hence porting Java GUI can be ruled out at present. Also some of the default Java classes are still being ported so you might not get all the functionalities you require. Also if your application depends on the exact Java class loading semantics, you might have to modify it to suit your needs.

    Используйте классы Java в программах .NET

    Предположим, вам нужно было предложено спрашивать: переносите слой логического бизнеса, написанные Java из проекта разработки иерархии на платформу .NET.
    Обычно вы не выбрали, вы должны переписать код записи и преобразовать уровень объекта на любой язык (например, C #).
    Разве это не считает эту ситуацию?

    Проблема не является способом решить, теперь рождается IKVM.NET.

    IKVM.NET — это проект с открытым исходным кодом, написанным в C #, который является реализацией версии Java проекта Mono / Microsoft.Net.
    Он реализует возможность разработки программы .NET с Java, и вы также можете поставить существующие API в Java и сборки в программе.
    Используйте любой .NET язык. Здесь можно загрузить исходный код и справочная документация программы IKVM.Net.

    Ikvm.net в основном состоит из трех частей:

    1. Виртуальная машина Java реализована с .NET
    2 Библиотека класса Java реализована с .NET
    3. Некоторые инструменты для взаимодействия между Java и .NET

    Прежде чем мы обсудим эту тему, дайте нам знать в пакете IKVM.NET, который будет использоваться в статье.
    Некоторые важные компоненты.

    • IKVM.RUNTIME.DLL: RUN WIRTUAL MATHION (VM), содержит код байта Мгновенный (JIT) Compiled / Verififier
    Все наборы кода; базовое отображение модели объекта;
    Исправление монтажа, метода локализации, размещенного ресурса .NET в пути классов.

    • IKVM.GNU.ClassPath.dll: сборник GNU версия классов, по бесплатным программным фондам
    (Бесплатное программное обеспечение) Добавлено некоторые библиотеки Java Class для уникального кода IKVM.Net

    • IKVM.EXE: программа запуска по сравнению с Java.exe («Динамический режим»).
    • IKVMc.exe: компилятор. Составьте классы java и баночки в монтажу .NET («Статический режим»).

    Хорошо, давайте вернемся к логическому слою Java Business на платформу .NET, используемые для других целей.
    Обычно мы используем много возможностей существующих API в Java в нашей программе .NET. Начните нашу интересную поездку.

    Загрузите процедуру из SourceForge в C: \ IKVM (или X: \ IKVM, X — путь для привода буквы диска на вашем компьютере).
    После декомпрессии вы можете найти IKVM-исполнитель и файл DLL в папке C: \ IKVM \ bind.
    Откройте окно командной строки или оболочки, переключитесь на каталог C: \ IKVM \ Bin, введите «IKVM».

    Если ваша операционная система установлена ​​правильно, вы увидите следующее:
    usage: ikvm [-options] [args. ] (to execute a class) or ikvm -jar [-options] [args. ] (to execute a jar file)
    Метод установки операционной системы на основе Linux аналогичен вышеуказанному способу.
    ОК, работа перед запуском демо-процедуры уже сделана.

    public class JavaToNet
    public static void main(String[] args)
    System.out.println(«This is a demonstration Program which\n»);
    System.out.println(«shows the conversion of Java class to\n»);
    System.out.println(«a .NET dll\n»);
    >
    public static double AddNumbers(double a,double b) double c = 0;
    c = a + b;
    return c;
    >
    public static double SubNumbers(double a,double b) double c = 0;
    c = a — b;
    return c;
    >
    public static double MulNumbers(double a,double b) double c = 0;
    c = a * b;
    return c;
    >
    public static double DivNumbers(double a,double b) double c = 0;
    c = a / b;
    return c;
    >
    >

    Наш класс Java очень виден, у него четыре функции, плюс, минус, умножение, разделенные, два
    Двойное поведение и возвращаемое значение. Наша цель — получить доступ к этим функциям через программу C #.
    Составьте больше, чем файлы Java для генерации файла javatonet.class. Мы будем использовать файлы классов Java
    Создайте файл dll .net для нашей программы.

    Преобразовать файлы классов Java в файлы .NET DLL с ikvm.net

    Скопируйте вышеуказанный файл класса Java (javatonet.class) в каталог c: \ ikvm \ bin.
    И запустить следующую команду IKVM -Target: библиотека javatonet.class
    Вышеуказанная операция будет генерировать javatonet.dll через javatonet.class.dll
    IKVMC также имеет некоторые другие параметры командной строки, например: ‘ikvmc -target: exe javatonet.class’
    Файл EXE будет создан без файла DLL. Вы можете ввести «IKVM», чтобы получить все справку командной строки.

    Настройте свою среду разработки .NET

    1. Создайте проект C # Windows
    2. Установите контроль перетаскивания в соответствии со следующим интерфейсом
    3. Добавьте следующие процедуры в справочник проекта, все файлы DLL можно найти в папке C: \ IKVM \ Bin
    ◦JavaToNet.dll
    ◦IKVM.GNU.Classpath.dll
    4. Добавьте следующий код в событие CLICK на кнопке.
    private void btnCal_Click(object sender, System.EventArgs e)
    if (rdAdd.Checked == true)
    txtResult.Text = Convert.ToString(JavaToNet.AddNumbers
    (Convert.ToDouble(txtNum1.Text),Convert.ToDouble(txtNum2.Text)));
    >else if (rdSub.Checked ==true)
    txtResult.Text = Convert.ToString(JavaToNet.SubNumbers
    (Convert.ToDouble(txtNum1.Text),Convert.ToDouble(txtNum2.Text)));
    >
    else if (rdMul.Checked == true)
    txtResult.Text = Convert.ToString(JavaToNet.MulNumbers
    (Convert.ToDouble(txtNum1.Text),Convert.ToDouble(txtNum2.Text)));
    >
    else
    txtResult.Text = Convert.ToString(JavaToNet.DivNumbers
    (Convert.ToDouble(txtNum1.Text),Convert.ToDouble(txtNum2.Text)));
    >
    >

    5. Добавьте следующую ссылку на заголовок файла * .cs
    using TimeZone = java.util.TimeZone;

    6 Добавьте следующий код в событие CLICK из часового пояса кнопки

    private void btnTimeZone_Click(object sender, System.EventArgs e)
    MessageBox.Show(TimeZone.getDefault().getDisplayName());
    >

    7. Скомпилируйте и запустите программу. C # теперь позвонит Addnumbers () в javatonet.dll,
    Подклюки (), Mulnumbers () и Divnumbers () функции и результаты возврата.

    8. Нажмите кнопку «часовой пояс», программа будет доступ к классу java.util.timezone и отображать
    Часовой пояс, где находится местоположение.

    Поскольку эти методы были написаны в Java, IKVM предоставляет нам программу .NET.
    Легкий многоканальный подход доступа к этим классам. В «часовом поясе» вы можете
    Доступ к пакету Java (например, java.io, java.util и т. Д.) И использовать его в вашей программе.

    Конечно, программа определенно связана с внутренне. Ikvm.net все еще активен в развитии, он в AWT
    Поддержка ограничена, поэтому Java GUI в настоящее время нарисована. Хотя некоторые классы по умолчанию в Java
    Неудел, вы не можете найти нужные вам функции. Если ваша программа зависит от класса Java
    Если вы загружаете характеристики, вам нужно настроить его в соответствии с вашими потребностями.

    Я думаю о компании, проект более 100 столов, если вы используете проект от Java в .NET
    Миграция платформы, переписывая физический уровень не исчерпан, если есть генератор субъекта компании,
    После поколения слегка измените код в порядке, но вы когда-нибудь думали, что объект-слой будет реализовывать проект от одного
    Платформа мигрирует на другую платформу . Сколько это так, и есть непреднамеренное неизвестное непреднамеренное
    Головная боль всего.

    Согласно вниманию автора, проект Java мигрируется на .NET, если визуальный контроль, связанный с AWT, не участвует.
    Класс можно легко перенести на платформу .NET. С IKVM.Net ‘i (исходный код программы) в Java также
    Работа объекта, к .NET или Object Operations. Переменная платформа, но метод связи между классами все еще с матерью (Java)
    Оптимизм, да, да

    У меня нет времени, чтобы организовать, и я возьму статьи автора. Я не разобрался, пока все понимают, это 🙂 У меня нет больше вступления.
    Идти сами, ~~

    Источник

    Оцените статью