[[Property:title|Eiffel2Java Sample]] [[Property:weight|1]] [[Property:uuid|90ef17d4-8e23-34dd-1cb8-488533561dd4]] This example shows how to create an instance of the Java Virtual Machine and the creation of an object of type test, a java class reproduced below: (Java Code) class test { test () { my_integer = 10; } public int my_integer; public static int my_static_integer; public void my_method (int arg_int, String arg_string) { my_static_integer = arg_int; my_integer = arg_int; } } In order to run properly you need to read [[Eiffel2Java|the library requirement]] . ===Compiling the example=== Since the example is using the `test.java` class, the first step is to compile the java class using the `javac` command line utility from the JDK. Once it is done, copy the `test.class` either into $ISE_EIFFEL\examples\Eiffel2Java\EIFGENs\classic\W_code or else into $ISE_EIFFEL\examples\Eiffel2Java\EIFGENs\classic\F_code, depending on your compilation mode (freezing vs. finalizing). ===Running the example=== Once the example is compiled, you can run it and here is the expected output: $ sample Creating instance of class `test' Value of `my_integer' is 10 Value of `my_static_integer' is 0 Calling `my_method' with (2, "String test") Value of `my_integer' after call to `my_method' is 2 ===Code description=== (Eiffel Code) class EIFFEL_TO_JAVA inherit SHARED_JNI_ENVIRONMENT create make feature -- Creation make local class_test: JAVA_CLASS instance_of_class_test: JAVA_OBJECT fid: POINTER value: INTEGER j_args: JAVA_ARGS do --| Creation of the Java object class_test := jni.find_class ("test") create instance_of_class_test.create_instance (class_test, "()V", Void) --| Access to a public attribute fid := instance_of_class_test.field_id ("my_integer", "I") -- 'fid' contains the id of the field 'my_integer' -- 'value' contains the value of the field referenced -- by 'fid' value := instance_of_class_test.integer_attribute (fid) --| Access to a static attribute using directly the JAVA_CLASS fid := class_test.field_id ("my_static_integer", "I") value := class_test.integer_attribute (fid) --| Access to a static attribute using the attribute 'jclass' fid := instance_of_class_test.jclass.field_id ("my_static_integer", "I") value := instance_of_class_test.jclass.integer_attribute (fid) --| Access to the method 'my_method' -- Get the id of 'my_method' fid := instance_of_class_test.method_id ("my_method", "(ILjava/lang/String;)V") -- Create the set of arguments for 'my_method' create j_args.make(2) j_args.push_int (2) j_args.push_string("String test") -- Create the set of arguments for 'my_method' -- Call to the void method referenced by 'fid' instance_of_class_test.void_method (fid, j_args) end -- make end -- class EIFFEL_TO_JAVA