Linea sfocata tra un framework e un SDK

0

Ho programmato professionalmente per un paio di decenni. Alcuni anni fa, la parola chiave non era così diffusa come lo è oggi, ma credo ancora che abbiamo usato "framework" per un tempo molto lungo prima che fossero chiamati così.

Ad esempio, Java SDK ha parti che possono essere considerate framework; come ad esempio il framework Collections. Inoltre J2EE fornisce alcune strutture, classi, interfacce e direttive per la creazione di soluzioni web. Non è un quadro? Bene, Wikipedia lo chiama una piattaforma.

Di solito nel corso degli anni, si costruisce una pletora di interfacce e classi che si conformano a una pratica comune che consente di creare app in meno tempo rispetto a prima sfruttando i risultati precedenti. Non è quel corpo di strutture, passaggi, analisi e prodotti di design (interfacce per implementare e classi astratte per estendere) un framework?

  • C'è una linea dura canonica e quotabile che separa cos'è un framework e che cos'è un set completo di API o un SDK?
  • Quando è stato introdotto il termine quadro in informatica?

Nota: questa altra domanda riguarda API vs SDK , quindi non è un duplicato.

Wikipedia lo dice solo:

"An architecture framework establishes a common practice for creating, interpreting, analyzing and using architecture descriptions within a particular domain of application or stakeholder community.

    
posta Tulains Córdova 08.01.2016 - 17:34
fonte

2 risposte

2

La definizione di Framework si è evoluta. Quando Sun ha pubblicato il framework di raccolte Java , era solo un modo elegante per dire "biblioteca". Oggi, un quadro significa più di questo. È il codice che ospita il tuo codice. Chiama il tuo codice contro il tuo codice chiamandolo. ( Il principio di Hollywood )

Da Martin Fowler :

"Inversion of Control is a key part of what makes a framework different to a library. A library is essentially a set of functions that you can call, these days usually organized into classes. Each call does some work and returns control to the client.

"A framework embodies some abstract design, with more behavior built in. In order to use it you need to insert your behavior into various places in the framework either by subclassing or by plugging in your own classes. The framework's code then calls your code at these points."

Wikipedia :

"In a framework, unlike in libraries or normal user applications, the overall program's flow of control is not dictated by the caller, but by the framework.

"(...)A framework has a default behavior."

Se il nome di un framework è confuso (ad esempio, .NET Framework), è probabile che sia stato chiamato prima della definizione moderna gelificata.

Confronta questo con un SDK . Un SDK è tutto ciò che serve per creare un tipo specifico di software disponibile per una piattaforma specifica: Java SDK (tutte le app Java), Android SDK (app che funzionano sul sistema operativo Android), SDK del driver di dispositivo Windows (driver del dispositivo per Windows), SDK del motore di app di Google (app che vengono eseguite su App Engine di Google), ecc.

    
risposta data 09.01.2016 - 06:35
fonte
7

Non ci può essere una definizione canonica per questi termini, poiché persone / società diverse usano i termini in modi diversi, soggettivi.

Dall'esperienza, vengono spesso utilizzate le seguenti definizioni e probabilmente il più vicino potrebbe arrivare a una definizione di consenso:

raccolta Una raccolta di classi / moduli / funzioni con almeno alcune di esse accessibili pubblicamente che estendono un'applicazione.

quadro Una raccolta di classi / moduli / funzioni che consentono di creare un'applicazione estendendo il framework. JEE è un esempio di questo: il tuo codice è sotto il controllo del framework, a differenza di una libreria.

API Un'interfaccia di programmazione dell'applicazione è una libreria che fornisce l'accesso ad altre applicazioni o componenti hardware.

SDK Un kit di sviluppo software è una raccolta di strumenti (ad esempio compilatori, librerie, debugger, IDE) per aiutare lo sviluppo di applicazioni contro alcune API utilizzando una o più lingue.

Detto questo, ci sono esempi ben noti che infrangono queste "regole", ad esempio ".NET Framework", che è un SDK in base alle definizioni precedenti.

    
risposta data 08.01.2016 - 17:54
fonte

Leggi altre domande sui tag