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.
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
際際滷 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 (20)
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
際際滷 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.
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 lutilizzo di librerie Java, tramite LibraryManager
il caricamento dinamico di oggetti Java, tramite JavaLibrary
Verificare a livello sperimentale su un opportuno prototipo
la fattibilit dellapproccio 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 dellapplicazione
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 allinterno
del metodo loadLibrary() del LibraryManager
Caricamento e utilizzo di una
libreria Java allinterno
dellapplicazione 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
laggiunta 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