Un'architettura è il concetto astratto di design di un'applicazione. In sostanza, una struttura delle parti in movimento e il modo in cui sono connesse.
Un framework è un'architettura generale o speciale precostruita progettata per essere estesa.
Se un'architettura è il progetto di una struttura, una struttura è l'architettura di una fondazione. I framework sono progettati specificamente per essere costruiti o estesi.
Alcuni framework si occupano principalmente di scaffolding. Significa che forniscono moduli precostruiti che sono facili da usare / estendere per salvare lo sviluppatore dal doverli creare da zero. Ad esempio, la maggior parte dei framework MVC (ex django, piloni, codeigniter) rende molto più semplice l'implementazione di sessioni, connessioni al database, template, ecc ...
Gli altri framework si occupano principalmente di aumentare le capacità del linguaggio stesso, riempiendo ciò che alcuni potrebbero considerare "pezzi mancanti". Aggiungono funzionalità che provengono da altre lingue, zucchero sincrono o estendono la lingua. La libreria Underscore è un perfetto esempio di questo. Non è molto utile per la creazione di applicazioni, lo scopo principale è estendere le funzionalità di base di javascript.
Esistono alcuni framework per aggiungere nuove funzionalità a una lingua o ridefinire le funzionalità esistenti in un modo nuovo. Ad esempio, jQuery ha preso il processo - prima doloroso - di interrogare il DOM HTML e l'ha reso banale. Hanno anche fornito un mezzo per scrivere richieste AJAX compatibili con browser. Mentre jQuery sembra aggiungere un nuovo stile di sintassi, dietro le quinte gira su JavaScript vaniglia. AngularJS è un altro framework che sfrutta JS / HTML in modi nuovi e interessanti usando vanilla JS.
Nel tuo caso. Spring e EJB sono entrambi framework MVC per scaffold, ognuno con i propri compromessi.