Java Programming Invoking application and commands

What is Runtime Object?

Runtime class encapsulates the run-time environment and cannot instantiate a Runtime object. we can get the reference to the current Runtime object by invoking getRuntime method.
Runtime runtime = Runtime.getRuntime();

How to invoke other application in Java?

  • Java provides the provision to execute or invoke other heavyweight process. It's very much useful in multitasking environment.
  • Multiple overloading formats are available for exec method in Runtime object and returns Process object./li>

Java program for invoking other application or program

public class CallExternalApp {                                                  
    public static void main(String[] args) {                                    
        try {                                                                   
                System.out.println("Opening external app (gedit) in java program");
                Runtime runTime = Runtime.getRuntime();                         
                Process process = runTime.exec("gedit");                        
        } catch (Exception ex) {                                                
            System.out.println("Exception: " + ex);                             
        }                                                                     
    }                                                                           
}      
Output:
$ java CallExternalApp
Opening external app (gedit) in java program
//Opens gedit app

exec method with different parameters in Runtime object

Process exec(String programName) throws IOException
Process exec(String programName, String[] environment) throws IOException
Process exec(String[] commandLineArray) throws IOException
Process exec(String[] commandLineArray, String[] environment) throws IOException

What is the use of waitFor method?

This waitFor method is part of Process object and it causes to wait invoking program till the sub process completes.

What is the use of destroy method?

destroy method is also part of Process object and it is used to kill the sub process invoked in the main program.

What is the use of exitValue method?

exitValue method returns the value which is returned by sub process once finished. mostly returns 0 if no problem is occurred.

Invoking app with waitFor and exitValue method

public class CallExternalApp {                                                  
    public static void main(String[] args) {                                    
        Process process = null;                                                 
        try {                                                                   
                System.out.println("Opening external app (gedit) in java program");
                Runtime runTime = Runtime.getRuntime();                         
                process = runTime.exec("gedit");                                
                process.waitFor();                                              
        } catch (Exception ex) {                                                
            System.out.println("Exception: " + ex);                             
        }                                                                       
        System.out.println("gedit returned " + process.exitValue());            
    }                                                                           
}   
Output:
$ java CallExternalApp
Opening external app (gedit) in java program
//Opens gedit app
gedit returned 0 //once opened gdit, returns code 0 if no problem is occurred.

Java program to run ping commands using Runtime object.

import java.io.*;                                                               
public class CallExternalApp1 {                                                 
   public static void main(String[] args) throws InterruptedException, IOException {
        String command = "ping -c 5 www.codingpointer.com";                     
        Process pr = Runtime.getRuntime().exec(command);                        
        BufferedReader reader =                                                 
              new BufferedReader(new InputStreamReader(pr.getInputStream()));   
        for(String line="";(line = reader.readLine()) != null;) {               
            System.out.print(line + "\n");                                      
        }                                                                       
    }                                                                           
}  
Output:
$ java CallExternalApp1
PING codingpointer.com (198.46.136.4) 56(84) bytes of data.
64 bytes from 198.46.136.4 (198.46.136.4): icmp_seq=1 ttl=48 time=248 ms
64 bytes from 198.46.136.4 (198.46.136.4): icmp_seq=2 ttl=48 time=237 ms
64 bytes from 198.46.136.4 (198.46.136.4): icmp_seq=3 ttl=48 time=349 ms
64 bytes from 198.46.136.4 (198.46.136.4): icmp_seq=4 ttl=48 time=261 ms
64 bytes from 198.46.136.4 (198.46.136.4): icmp_seq=5 ttl=48 time=488 ms

--- codingpointer.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 237.146/317.018/488.713/94.641 ms

Java program to run ping commands using ProcessBuilder object.

  • java.lang.ProcessBuilder makes it much easier to specify a process, set up its environment, spawn it, and handle its file descriptors.
  • ProcessBuilder class is used to create operating system processes.
  • Each ProcessBuilder instance manages a collection of process attributes. The start() method creates a new Process instance with those attributes. The start() method can be invoked repeatedly from the same instance to create new subprocesses with identical or related attributes.
import java.io.*;                                                               
class CallExternalApp2 {                                                        
   public static void main(String[] args) throws InterruptedException, IOException {
        Process pr = new ProcessBuilder(                                        
        "ping","-c","5", "www.google.com").start();                             
        BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream()));
        for(String line="";(line = br.readLine()) != null;) {                   
            System.out.println(line);                                           
        }                                                                       
    }                                                                           
}      
Output:
$ java CallExternalApp2
PING www.google.com (216.58.220.36) 56(84) bytes of data.
64 bytes from maa03s18-in-f36.1e100.net (216.58.220.36): icmp_seq=1 ttl=56 time=9.64 ms
64 bytes from maa03s18-in-f36.1e100.net (216.58.220.36): icmp_seq=2 ttl=56 time=9.96 ms
64 bytes from maa03s18-in-f36.1e100.net (216.58.220.36): icmp_seq=3 ttl=56 time=9.57 ms
64 bytes from maa03s18-in-f36.1e100.net (216.58.220.36): icmp_seq=4 ttl=56 time=9.94 ms
64 bytes from maa03s18-in-f36.1e100.net (216.58.220.36): icmp_seq=5 ttl=56 time=13.8 ms

--- www.google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4004ms
rtt min/avg/max/mdev = 9.576/10.592/13.833/1.629 ms

Creating new directory in current folder using ProcessBuilder

import java.io.*;                                                               
class CallExternalApp2 {                                                        
   public static void main(String[] args) throws IOException{                   
        Process pr = new ProcessBuilder(                                        
        "mkdir","childdir3").start();                                           
    }                                                                           
}  
Output:
$ java CallExternalApp2
//new directory will be created if not exists, otherwise no error is displayed for above program.

Java Programming Examples

GCD and Rational Number Java Program

Java Queue Program using exception

Java Stack Program using exception

Addition of three integers java program

Biggest of three integers java program

Fibonacci numbers java program

Arithmetic Operations Menu java program

Second Smallest Element In Array Java Program

Transpose Of A Matrix Java Program

Java Program to Display triangle of stars (*)

Java Programming Prints Product Tables

Java Program to Display triangle of numbers

Java Programming Gets Current Date

Java Programming Finds Character Vowel or Consonent

Java Programming HCF and LCM Computation

Java Programming Sum of Command Line Integer Arguments

Java Programming Multiplication of Command Line Integer Arguments

Java Programming Multiplication of Command Line Floating Point Numeric Arguments

Java Programming String Contains or Not

Java Programming Gets Grade Description using Switch

Java Programming CSV File Reader

Java Programming Character Frequency Count in String using for each

Java Programming Finds Min from Integer Array by Passing Array to Method

Java Programming Linear Search

Java Programming Binary Search

Java Programming Ternary Search

Java Programming Generates Range of Numbers

Java Programming Generates Range of Characters

Java Programming Computes Square Root Value

Java Programming Checks Number is Positive or Negative

Java Programming Checks Number is Odd or Even

Java Programming Computes Plot Area

Java Programming Convert Number of Days into Years

Java Programming Checks a Year is Leap Year, Century Year or Not

Java Programming Checks a Character is Digit, Letter or neither digit nor letter

Java Programming Checks a Number is Palindrome or not

Java Programming Sum of Two Matrix

Java Programming Power Computation

Java Programming Checks Number is an Armstrong Number or not

Java Programming Temperature Unit Conversions

Java Programming Generates Random Numbers in Specified Range

Java Programming Computes Sum of Digits and Product of Digits

Java Programming Computes Reverse Number

Java Programming Computes Factorial Value

Java Programming Checks Prime Number or not

Java Programming Computes Harmonic Series

Java Programming Generates Floyd's Triangle

Java Programming Reverses String

Java Programming Checks Palindrome String or not

Java Programming Opens Notepad

Java Programming Searches String using RegEx Pattern

Java Programming Searches Word in String

Java Programming Gets System Environment Variables

Java Programming Gets IP Address of Server Name

Java Programming Arrays Sort and Reverse using sort method

Java Programming Bubble Sorting

Java Programming Selection Sorting

Java Programming Insertion Sorting

Java Programming Merge Sorting

Java Programming Quick Sorting

Java Programming Counting Sort

Java Programming Radix Sorting

Java Programming Sorting Array of Strings

Java Programming String Characters Sorting

Java Programming Sum of First N Numbers

Java Programming Product of First N Numbers

Privacy Policy  |  Copyright@2017 - All Rights Reserved.  |  Contact us   |  Report website issues in Github   |  Facebook page   |  Google+ page

Free online programming tutorials

Email Facebook Google LinkedIn Twitter
^