Newsgroup: it.comp.java
Titolo: Creare applizazine bassata su plugin

Ciao a tutti
Ho deciso di estendere una mia applicazione fatta l'anno scorso come
progetto universitario. Questa estensione, o meglio è una revisione
molto approfondita, dovrà permettere all'applicazione di essere estesa
tramite dei plugin appositi.
Per l'applicazione base non è un problema, il mio dilemma riguarda la
gestione dei plugin.
Ovvero
i plugin per essere utilizzabili dovranno avere 2 classi che estendono
le classi astratte Plugin e PluginFactory che sono contenuta
nell'applicazione base.
Per compilare poi devo Fare si che il compilatore veda le due classi
astratte, non ci sono problemi se io mi ritrovo poi dei duplicati di
classi nell'applicazione?
Mi spiego meglio, ho l'applicazione base che chiamo PluginApp e nella
sua struttura ho le classi pluginapp/Plugin e pluginapp/PluginFactory.
Se io creo i plugin ovviamente nel JAr troverò una copia di queste 2
classi altrimenti col cavolo che compila
Questa cosa può dare problemi?
Se si potreste suggerire un manuale o simile per poter risolvere
questo problema?
Ciao a tutti e grazie 1000 ancora
Ciao Marco

 questo problema?
Non serve un manuale, basta non aggiungere le classi al JAR del tuo
plugin ;).
Se fossi utente Maven sapresti bene che esistono dipendenze di
compilazione, e di runtime. Il fatto che aggiungi un jar al classpath
non significa per forza che questo debba finire nel JAR finale.
Qualsiasi IDE ti permette di distringere tra questi 2 concetti, ovvero
puoi aggiungere un jar per compilazione e runtime, oppure solo per la
compilazione, oppure ancora solo per il runtime.

 Se fossi utente Maven
Anzi te lo consiglio proprio. Il progetto che stai sviluppando e'
composto di moduli: quello principale e i progetti plugin che hanno
una dipendenza sul modulo principale.
Maven e' ottimo per gestire questo tipo di progetti.
Solo se hai tempo,  perche' richiede un po' per essere
sufficientemente padroneggiato.

 gestione dei plugin.
Ciao,
perchè invece di reinventarti un sistema di plugin da zero, non adotti 
una piattaforma che già prevede l'uso di plugin? Ad esempio NetBeans RCP 
(
http://www.netbeans.org/features/platform/index.html
) o (se proprio ti 
tocca :) ) Eclipse RCP (
http://www.eclipse.org/community/rcp.php
).
-- 
Lucio Benfante
JUG Padova           
http://www.parancoe.org
 ...have a look at it!
www.jugpadova.it
 
http://www.jugevents.org

@ cicap
Non sono un utente maven e per quello che ho fatto fin'ora tra
università e lavoro non ho mai dovuto realizzare cose estensibili in
questo modo.... tutte le altre applciazioni che ho realizzato sono
sempre modulari ma l'IDE mi tirava sempre dentro le dipende. Si vede
che sbaglaivo il modo di fare le cose.
Inoltre le due classi astratte per i Plugin non prevedo di aggiornarle
sul breve periodo per cui problmea scongiurato...
@ Lucio
Tranquillo che Eclipse non mi tocca!!! :D  Quando devo utilizzare
Eclipse o RSA in università iniziano a volare porconi a destra e
sinistra... Non mi ci trovo per nulla!!! Sono un accanito utilizzatore
di netbeans. usare la paittafomra di netbeans era stata una ipotesi.
Ma l'ho momentaneamente tralasciata poichè non ho mai costruito nulla
sulla Platform e poi anche perchè volevo imparare io a modellare un
sistema estensibile a plugin...
Se volessi usare la NetBeans RCP ogni volta che avvio l'applicazione
devo caricare tutta la Piattaforma? oggi magari provo a vedere su
netbeans.org
 se trovo dei bei tutorial
Ma nella RPC i Jar posso utilizzarlioa cneh come app standalone per
veder che cosa fanno?
Ciao grazie 1000
Marco


Per quanto riguarda le classi duplicate, a me pare in ogni caso una
sozzeria inguardabile :), ma saro' io un purista...(sistema invece da
subito, tanto piu' se si tratta di una tesi che deve fare una certa
bella figura...).
Tranquillo, puoi farlo con NetBeans senza Maven (ogni dipendenza
dovrebbe avere un flag che significa aggiungila al pacchetto finale o
meno, che ovviamente e' selezionata di default...almeno era cosi' fino
a quelche anno fa se non ricordo male).

 veder che cosa fanno?
Dipende da cosa fanno le classi del jar. Ovviamente se usano servizi 
della RCP, hai bisogno della RCP. Se invece non lo fanno, puoi usarle 
ovunque tu voglia, basta mettere il jar nel classpath.


 bella figura...).
No no non si tratta della tesi
Sono alla fine del secondo anno è un pò prestino parlare di tesi!!
anche se non mi dispiacerebbe.
Anche a me non piace la soluzione delle classi duplicate, è per questo
motivo che chiedevo come poter ovviare al problema, visto che non sono
per null aesperto in ambito di estensibilità vi a plugin
non si tratta, secondo me di essere puristi o meno si tratta di
scrivere buon codice e soprattutto mantenibile
al momento comunque stò ancora progettando per cui non è un problema
modificare secondo i consigli ricevuti. soprattutto se mi fanno capire
che le idee che avevo inizialmente facevano pena per la poca eleganza!
Grazie ancora
Marco