code: public static void main(String[] args)
      {
          //We construct a builder for a BOT account. If we wanted to use a CLIENT account
          // we would use AccountType.CLIENT
          try
          {
              JDA jda = new JDABuilder("Your-Token-Goes-Here")         // The token of the account that is logging in.
                      .addEventListener(new MessageListenerExample())  // An instance of a class that will handle events.
                      .build();
              jda.awaitReady(); // Blocking guarantees that JDA will be completely loaded.
              System.out.println("Finished Building JDA!");
          }
          catch (LoginException e)
          {
              //If anything goes wrong in terms of authentication, this is the exception that will represent it
              e.printStackTrace();
          }
          catch (InterruptedException e)
          {
              //Due to the fact that awaitReady is a blocking method, one which waits until JDA is fully loaded,
              // the waiting can be interrupted. This is the exception that would fire in that situation.
              //As a note: in this extremely simplified example this will never occur. In fact, this will never occur unless
              // you use awaitReady in a thread that has the possibility of being interrupted (async thread usage and interrupts)
              e.printStackTrace();
          }
      }
docs: This is the method where the program starts.