En grundlæggende regel ved bygning af modulære softwaresystemer er at undgå tæt kobling mellem komponenter. Hvis komponenter er tæt integreret, bliver det svært at oversætte stykkerne til forskellige konfigurationer eller at erstatte en komponent med en anden implementering, uden at ændringerne breder sig som ringe i vandet på tværs af systemet.
Løs kobling i Eclipse opnås delvist via mekanismen med udvidelser og udvidelsespunkter. Den enkleste metafor til at beskrive udvidelser og udvidelsespunkter er en stikkontakt. Stikkontakten eller soklen er udvidelsespunktet. Stikket eller lyspæren, som er tilsluttet kontakten, er udvidelsen. Som det gælder for stikkontakter, har udvidelsespunkter en lang række forskellige former og størrelser, og kun de udvidelser, der er designet til et bestemt udvidelsespunkt, passer til.
Når en plugin vil give andre plugins mulighed for at udvide eller tilpasse dele af dens funktionalitet, erklærer den et udvidelsespunkt. Udvidelsespunktet erklærer en kontrakt, typisk en kombination af XML-kode og Java-grænseflader, som udvidelserne skal passe til. Plugins, der vil oprette forbindelse til det pågældende udvidelsespunkt, skal implementere kontrakten i deres udvidelse. Den vigtigste attribut er, at den plugin, der udvides, ikke ved noget om den plugin, der opretter forbindelse til den, ud over omfanget af udvidelsespunktkontrakten. Herved bliver det muligt for plugins, som er bygget af forskellige personer eller firmaer, at arbejde problemfrit sammen, uden at de ved ret meget om hinanden.
Eclipse-platformen benytter udvidelser og udvidelsespunkter på mange forskellige måder. Nogle udvidelser er helt deklarative, dvs. de bidrager slet ikke med kode. Et udvidelsespunkt leverer f.eks. tilpassede tastbindinger, og et andet definerer tilpassede filannotationer, der kaldes markeringer. Ingen af disse udvidelsespunkter kræver kode på vegne af udvidelsen.
En anden kategori af udvidelsespunkter bruges til at tilsidesætte standardfunktionsmåden for en komponent. Java-udviklingsværktøjerne inkluderer f.eks. et kodeformateringsprogram, men leverer også et udvidelsespunkt, så kodeformateringsprogrammer fra tredjepart kan tilføjes. Ressource-plugin'en har et udvidelsespunkt, der giver mulighed for, at bestemte plugins kan erstatte implementeringen af grundlæggende filfunktioner, f.eks. flytning og sletning.
En anden kategori af udvidelsespunkter bruges til at gruppere relaterede elementer i brugergrænsefladen. Udvidelsespunkter til levering af oversigter, editorer og guider i brugergrænsefladen giver f.eks. den grundlæggende UI-plugin mulighed for at gruppere almindelige funktioner, f.eks. placering af alle importguider i én enkelt dialogboks, og for at definere en konsekvent metode til at præsentere UI-bidrag fra en lang række af andre plugins.
Udvidelser (plugin-editor)
Udvidelsespunkter (plugin-editor)