ICore
From KDevelop
As in KDevelop3, the central object that gives access to all shell functionality is Core. There's a ICore interface and Core implementation. ICore interface gives access to all controllers exposed via interfaces. Each plugin is initialized with ICore pointer so it always has access to core via IPlugin::core() method. There's no need for something like KDevelop3's KDevAPI class anymore.
Core is a singleton that needs to be manually initialized by platform application using 'Core::initialize() right after the KApplication object is created and ShellExtension is initialized. ShellExtension is the same thing as in KDevelop3 - the way to platform application to tell which UI configuration files are used and what is the default profile. KDevelop4 shell extension's only difference is defaultArea() method which shall return the name of default UI area (see KDevelop 4 UI for more information about areas).