title: How do Java plug-in / extension applications work?
body: <p>I want to create a Java GUI application that is self-contained, but can take in add-ons that can write to the GUI terminal or add an options tab to the GUI application. But in order to implement that, I need to know how Java plug-in / extension applications work.</p>
  
  <p>For example, an Eclipse plug-ins. If I create a simple Eclipse plug-in that does something with the Eclipse GUI, say write something in the terminal or create a new options tab, how does that work under the hood? I understand that there is a shared library/jar, but is there like a Java RMI Remote Object under the hood? Something like OSCi? Does it use dynamic class loading, like with a URLClassLoader? In a nutshell, how does it work? What is a good, clean, simple way to implement something like that? I want to be able to implement something similar (just with a much less complicated GUI). </p>