You could use BIRT Runtime or in the other hand you've the process for running from a java class. In this method you don't need to use the BIRT Runtime, you just need to add the .jar files to the project in the documentation you'll see more information.
Documentation from BIRT:
http://www.eclipse.org/birt/documentation/integrating/reapi.php
Just to start you will need to understand that the Runtime in Java Class is called EngineConfig().
EXAMPLE:
try{
final EngineConfig config = new EngineConfig( );
//BIRT provides two ways of doing the reports externally
//1.- BIRT Runtime is kind of difficult to configure
//2.- POJO It uses classes into a Java class (You need to import the emitters from the format you'll use and other libraries.
//config.setEngineHome( "C:\\birt-runtime-2_6_2\\birt-runtime-2_6_2\\ReportEngine" );
config.setLogConfig("c:/temp", Level.FINE);
Platform.startup( config );
//If using RE API in Eclipse/RCP application this is not needed.
IReportEngineFactory factory = (IReportEngineFactory) Platform
.createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
IReportEngine engine = factory.createReportEngine( config );
engine.changeLogLevel( Level.WARNING );
}catch( Exception ex){
ex.printStackTrace();
}
// Run reports, etc.
...
//On the page it's the explanation to create the container and the properties for the report, like the selection of the rptdesign to be used, the parameters, the outputfile path, outputfile format, etc.
//IRunTask and IRunandRenderTask are the method to send the options to the Runtime class that will get the report, output, etc.
//EXACTLY ON THE EMITTERS CONFIGURATION'
// destroy the engine.
try
{
engine.destroy();
Platform.shutdown();
//Bugzilla 351052
RegistryProviderFactory.releaseDefault();
}catch ( EngineException e1 ){
// Ignore
}