tuProlog è un interprete Prolog scritto in Java, attualmente giunto alla versione 2.7.2. La versione Android offre le stesse funzionalità della versione Java, ma con una eccezione: il supporto al class loading, che tuProlog sfrutta per il caricamento dinamico di librerie e teorie, non opera allo stesso modo e con la stessa flessibilità di quello Java a causa delle differenze fra le due piattaforme, in particolare per quanto riguarda il caricamento di jar e class "on the fly". Scopo di questa tesi è quindi studiare le differenze di funzionamento, valutare le opzioni possibili e verificando a livello sperimentale, su un opportuno prototipo, la fattibilità e la validità dell'approccio identificato.
Per la mia tesi di Laurea Triennale, ho realizzato un'applicazione Mobile per il sistema operativo Android, di nome "MyAv". Condivido con voi le slide che ho utilizzato per la presentazione del mio progetto. Come tema ho utilizzato "Banquo template" http://www.slidescarnival.com/banquo-free-presentation-template/339
Apache Maven - Gestione di progetti Java e build automationTiziano Serritella
Apache Maven è un tool per la gestione di progetti e build automation, utilizzato principalmente per progetti Java, il cui obiettivo è: semplificare, uniformare e automatizzare il processo di build di sistemi complessi.
In questa presentazione / guida verranno illustrati i problemi e le criticità dei tool di build automation tradizionali: make e Apache Ant, vedremo poi come installare e configurare Maven, le caratteristiche, gli obiettivi e i punti di forza del tool, le fasi del ciclo di vita, i plugin e i goal, le dipendenze, gli scope e la risoluzione di eventuali conflitti, i repository, i plugin "esterni" e i progetti multi-modulo.
La presentazione è ricca di esempi pratici.
Per la mia tesi di Laurea Triennale, ho realizzato un'applicazione Mobile per il sistema operativo Android, di nome "MyAv". Condivido con voi le slide che ho utilizzato per la presentazione del mio progetto. Come tema ho utilizzato "Banquo template" http://www.slidescarnival.com/banquo-free-presentation-template/339
Apache Maven - Gestione di progetti Java e build automationTiziano Serritella
Apache Maven è un tool per la gestione di progetti e build automation, utilizzato principalmente per progetti Java, il cui obiettivo è: semplificare, uniformare e automatizzare il processo di build di sistemi complessi.
In questa presentazione / guida verranno illustrati i problemi e le criticità dei tool di build automation tradizionali: make e Apache Ant, vedremo poi come installare e configurare Maven, le caratteristiche, gli obiettivi e i punti di forza del tool, le fasi del ciclo di vita, i plugin e i goal, le dipendenze, gli scope e la risoluzione di eventuali conflitti, i repository, i plugin "esterni" e i progetti multi-modulo.
La presentazione è ricca di esempi pratici.
Presentazione sull'evoluzione di Struts, primo framework web MVC in ambito Java e sul merger con WebWork, effettuata durante la (prima!) tappa di Torino della prima edizione di JavaDay '06.
SPRING - MAVEN - REST API (ITA - Luglio 2017)Valerio Radice
Introduzione al framework Java Spring e Maven per realizzare API REST.
Breve introduzione all'uso di Maven per configurare un progetto SpringBoot e realizzare un server REST.
Disponibile il codice dimostrativo su github (link nelle slide, attenzione alle branch).
Valerio Radice (valix85)
Luglio 2017
Slide introduttive al linguaggio Java 8 in preparazione alla certificazione OCA 1Z0-808.
Lezione del 12-10-2017 tenuta da Valerio Radice presso Nextre Engeneering
https://www.nextre.it/corso/corso-java-oca/
Presentazione sullo stato dell'arte nell'utilizzo e nello sviluppo di Java su Mac OS X effettuata al JUG Milano Meeting #14 del 12 gennaio 2006 presso Mac@Work.
Introduzione a Docker e alla Dockerizzazione.
Filosofia e progettazione Docker
Comandi principali per gesitere immagini, container, volumi e reti
Dockerfile e docker-compose
Valerio Radice @ Nextre (Maggio 2017)
TAG: docker , Dockerfile , docker-compose , italian , nextre
OpenOffice.org non è solo la principale suite di applicazioni per l'ufficio completamente libera e basata su open standard (OpenDocument è standard ISO), ma può trasformarsi in una potente piattaforma per applicazioni document-based programmabile via Java.
In questa presentazione esploreremo le potenzialità del connubio fra OpenOffice.org e Java tramite alcuni esempi applicativi. In particolare vedremo la possibilità di eseguire script nei linguaggi basati su JVM come BeanShell e Jython, l'esecuzione remota da applicazioni Java esterne di funzioni di OpenOffice.org lanciato in modalità server, e i diversi punti di aggancio per estendere le funzionalità della suite dall'interno tramite componenti Java custom.
Vedremo infine la nuova applicazione Base presente in OpenOffice.org 2.0 per l'accesso a sorgenti dati JDBC.
More Related Content
Similar to Tesi: " Class loading in Android: applicazione a tuProlog " - Alessio Mercurio
Presentazione sull'evoluzione di Struts, primo framework web MVC in ambito Java e sul merger con WebWork, effettuata durante la (prima!) tappa di Torino della prima edizione di JavaDay '06.
SPRING - MAVEN - REST API (ITA - Luglio 2017)Valerio Radice
Introduzione al framework Java Spring e Maven per realizzare API REST.
Breve introduzione all'uso di Maven per configurare un progetto SpringBoot e realizzare un server REST.
Disponibile il codice dimostrativo su github (link nelle slide, attenzione alle branch).
Valerio Radice (valix85)
Luglio 2017
Slide introduttive al linguaggio Java 8 in preparazione alla certificazione OCA 1Z0-808.
Lezione del 12-10-2017 tenuta da Valerio Radice presso Nextre Engeneering
https://www.nextre.it/corso/corso-java-oca/
Presentazione sullo stato dell'arte nell'utilizzo e nello sviluppo di Java su Mac OS X effettuata al JUG Milano Meeting #14 del 12 gennaio 2006 presso Mac@Work.
Introduzione a Docker e alla Dockerizzazione.
Filosofia e progettazione Docker
Comandi principali per gesitere immagini, container, volumi e reti
Dockerfile e docker-compose
Valerio Radice @ Nextre (Maggio 2017)
TAG: docker , Dockerfile , docker-compose , italian , nextre
OpenOffice.org non è solo la principale suite di applicazioni per l'ufficio completamente libera e basata su open standard (OpenDocument è standard ISO), ma può trasformarsi in una potente piattaforma per applicazioni document-based programmabile via Java.
In questa presentazione esploreremo le potenzialità del connubio fra OpenOffice.org e Java tramite alcuni esempi applicativi. In particolare vedremo la possibilità di eseguire script nei linguaggi basati su JVM come BeanShell e Jython, l'esecuzione remota da applicazioni Java esterne di funzioni di OpenOffice.org lanciato in modalità server, e i diversi punti di aggancio per estendere le funzionalità della suite dall'interno tramite componenti Java custom.
Vedremo infine la nuova applicazione Base presente in OpenOffice.org 2.0 per l'accesso a sorgenti dati JDBC.
Similar to Tesi: " Class loading in Android: applicazione a tuProlog " - Alessio Mercurio (20)
Tesi: " Class loading in Android: applicazione a tuProlog " - Alessio Mercurio
1. A.A. 2012/2013 - Sessione III
ALMA MATER STUDIORUM - UNIVERSITÀ DI BOLOGNA
SCUOLA DI INGEGNERIA E ARCHITETTURA
CORSO DI LAUREA IN INGEGNERIA INFORMATICA
Dipartimento di Informatica - Scienza e Ingegneria DISI
Class Loading in Android:
applicazione a tuProlog
CANDIDATO:
Alessio Mercurio
RELATORE:
Chiar.mo Prof. Enrico Denti
CORRELATORE:
Ing. Alessandro Montanari
2. Contesto: tuProlog (1/3)
Interprete Prolog scritto in Java
interoperabile con Java e .NET
disponibile per diverse piattaforme
JavaSE
Android
Microsoft .NET
Eclipse plugin
3. Contesto: tuProlog (2/3)
Il supporto al Class Loading di tuProlog prevede:
Caricamento dinamico di librerie Java
LibraryManager
Caricamento dinamico di oggetti Java
JavaLibrary
4. Contesto: tuProlog (3/3)
tuProlog per Android:
Stessi core, librerie e funzionalità
MA
Mancanza del supporto al Class Loading per il
caricamento dinamico di librerie e teorie
5. Obiettivi
Analizzare le differenze tra le piattaforme Java e Android
riguardo al meccanismo di Class Loading
Rivedere la struttura e l'ingegnerizzazione di tuProlog in Java
e Android per garantire anche in Android
il caricamento e l’utilizzo di librerie Java, tramite LibraryManager
il caricamento dinamico di oggetti Java, tramite JavaLibrary
Verificare a livello sperimentale su un opportuno prototipo
la fattibilità dell’approccio identificato
l'invarianza delle scelte sul funzionamento nelle altre piattaforme
6. Da Java ad Android
Nuova macchina virtuale: Dalvik Virtual Machine
Nuovo bytecode: Dalvik Executable ( .dex )
7. Il formato .dex - Dalvik Executable
Non più jar contenenti un file .class per classe
ma jar con un solo file classes.dex contenente
tutte le classi
8. DexClassLoader
Classloader di tipo “dex-based” utilizzato in Android
per poter eseguire codice che non è stato installato
come parte dell’applicazione
Appartiene al package dalvik.system
Carica classi da file .jar contenenti un singolo file
classes.dex
9. Problemi e sfide
Problema 1
l'attuale LibraryManager non può operare in Android
Sfida: estendere il LibraryManager per garantire il
caricamento delle librerie nel nuovo formato, senza
impatto sulle altre piattaforme
Problema 2
l'attuale JavaLibrary non può operare in Android
Sfida: estendere la JavaLibrary per consentire il
caricamento di oggetti Java anche in Android, senza
impatto sulle altre piattaforme
10. Refactoring del LibraryManager
COSA: estensione del LibraryManager per consentire il
caricamento di librerie anche nel caso Android
COME: aggiunta del supporto al DexClassLoader all’interno
del metodo loadLibrary() del LibraryManager
Caricamento e utilizzo di una
libreria Java all’interno
dell’applicazione tramite il
predicato load_library/2 .
11. Aggiornamento della GUI Android
Obiettivo: permettere agli utenti Android di gestire
graficamente le proprie librerie
Soluzione: progetto e realizzazione di una nuova
LibraryManagerActivity che permetta
l’aggiunta di librerie al motore Prolog a runtime
la rimozione di librerie dal motore Prolog a runtime
12. LibraryManagerActivity (1/2)
1. Nome completo della libreria da
caricare
2. Selezione del file jar sorgente
3. Aggiunta della nuova libreria
4. Rimozione di una libreria già caricata
5. Lista di librerie caricate
6. Messaggi di stato
1 2
3 4
5
6
14. Refactoring di JavaLibrary (1/2)
Obiettivo: estenderne le funzionalità mantenendo
incapsulate le dipendenze dalla piattaforma
Soluzione: nuova gerarchia di classloader
ex ClassLoader
(reso astratto)
Concretizzazioni platform-dependent
15. Soluzioni: modifica della JavaLibrary (2/2)
Utilizzo dei predicati set_classpath
e get_classpath
Utilizzo del predicato
java_object
17. Conclusioni
Obbiettivi completamente raggiunti
Eliminate le dipendenze dalla versione Java
Evitati stravolgimenti alla struttura del software
Prestazioni invariate sulla piattaforme non coinvolte
Novità della versione Android
GUI Android arricchita
Funzionamento Android più coerente e uniforme con le
altre piattaforme