OSGi - это стандарт API и упаковки для взаимодействующих программных модулей. Это похоже на другие стандарты API, такие как JPA или Java EE.
Среда выполнения OSGi - это сервер, который следует стандарту OSGi, это реализация стандарта. Вы упоминаете некоторые из них: Knopflerfish, Eqinox. Они позволяют запускать комплекты OSGi.
Веб-контейнер обычно относится к реализации веб-частей Java EE (сервлетов). Стандарт сервлета также определяет API и упаковку, как OSGi, только разные.
Вам нужен сервер для запуска ваших веб-приложений Java EE. Вы упаковываете свое приложение как Java Web Archive (WAR) и запрашиваете у своего сервера приложений запустить его. Как вы упомянули, есть несколько серверов, таких как Tomcat, Jetty, но есть и более крупные серверы, которые охватывают более крупные части стандарта Java EE, такие как Glassfish и JBoss.
Веб-расширитель пытается унифицировать стандарт сервлета с OSGi. При добавлении некоторых специфичных для OSGi данных в уже упакованную WAR-файл WAR будет автоматически проанализирован и запущен во время выполнения OSGi. Ваши сервлеты WAR будут опубликованы в службе OSGi http веб-расширителем. С помощью веб-расширителя вы можете запускать как стандартные приложения OSGi, так и WAR-файлы, используя только среду выполнения OSGi, без необходимости использования Java-совместимого сервера, такого как Tomcat.