If you are writing a 'pure' Eclipse 4 (e4) application (one which does not use the 3.x compatibility code) then you can't use most of the org.eclipse.ui.xxx
code. Extension points are still used but many things are done by objects set in the Eclipse context which can be accessed by direct injection.
You can still define OSGi services, usually using the declarative style by creating a component definition file
(see the File > New > Other > Plug-in Development > Component Definition
wizard).
For an OSGi service you can optionally use a ContextFunction
to delay creating the service instance.
Or you can simply put your service class instance in to the Eclipse context - you would often do this in the @PostContextCreate
method of a LifeCycle
class.
This is a rather broad subject so I have only given a brief overview.