There are two valid entry points for a Ballerina application: a method, main(), which runs as a terminating process; and a hosted non-terminating process, service.
The main.bal application, without any parameters, may be executed as follows:
$ ballerina run main.bal
The output is:
Hello, !
As shown above, no name is displayed in the output. Adding a parameter to the command will change that:
$ ballerina run main.bal --hello.user.name=Mike
The output is now:
Hello, Mike!
Notice the parameter matches the string inside the getAsString() method call.
An optional configuration file may also be used in an application. Consider the ballerina.conf file:
[hello.user]
name="Rowena"
The application can be executed without any parameters and will now display the name specified in the configuration file:
$ ballerina run main.bal
Hello, Rowena!
The service.bal application is a service representing a network-accessible API bound to port 9090.
$ ballerina run service.bal
Once the server is running, either use the URL in the browser or curl command in a terminal window:
http://localhost:9090/hello/sayHello
$ curl -w "\n" http://localhost:9090/hello/sayHello
The output will be:
Hello Ballerina!
For those that would like to relate to JAX-RS, note that the variable hello next to the service keyword represents the application path.
The sayHello() method represents the endpoint.