Sunday, January 20, 2013

Java native methods

After compilation of source file in Java, .class file gets generated which is used by JVM for executing the program. Does it mean that, you can't write code in any other language for Java platform? Certainly NOT!

Java provides mechanism to implement some of the functionality through native languages like C and C++. Native code is compiled to native machine code of the underlying processor and stored in Dynamically-linked Libraries (DLL). When a running application calls a native method; the Virtual machine loads the library that contains the native method and then invokes it. So, native methods are connection between Java program and underlying host OS.


Java provides native support so that you can access resources of the particular host that are unavailable through Java API, or even if it's available, it gives you alternative to write more efficient code through native code. But keep in mind that; this will make your code platform dependent. Let's cover some of the native methods from Java API.


System.arrayCopy:[java doc]

Copies  an array from the specified source array, beginning at the specified position, to the specified position of the destination array. A subsequence of array components are copied from the source array referenced by src to the destination array referenced by dest. The number of components copied is equal to the length argument. The components at position srcPos through srcPos+length-1 in the source array are copied into position destPos+length-1, respectively, of the destination array.

public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)

        String[] a = {"ab", "bc", "cd"};
        String[] b = new String[5];
        System.arraycopy(a, 0, b, 0, 2);
        System.out.println(" Copied Array Content "+ Arrays.toString(b));
                  output : Copied Array Content [ab, bc, null, null, null]

 

System.currentTimeMillis:[java doc]

Returns the current time in milliseconds. Note that, while the unit of time of the return value is a milliseconds, the granularity of the value depends on the underlying operating system and may be larger. For example, many operating systems measure time in units of tens of milliseconds.


System.nanoTime: [java doc]

Returns the current value of the running Java Virtual Machine's high-resolution time source, in nanoseconds.

 

String.intern: [java doc]

Returns a canonical representation of the String object. Check out this tutorial for details  

 

Object.clone : 

Discussed in detail in a separate post