Java & Linux. Stefano Sanna Gruppo Utenti Linux Cagliari



Documenti analoghi
Programmazione ad Oggetti. Java Parte I

Panoramica: che cosa è necessario

Strumenti per la programmazione

Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo

Informatica. Prof. A. Longheu. Introduzione a Java

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Ambienti di Sviluppo

Corso sul linguaggio Java

Come valutare e scegliere un Sistema Operativo Embedded

Programmazione Orientata agli Oggetti in Linguaggio Java

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Installazione del Software. per lo Sviluppo di Applicazioni Java

Approccio stratificato

Sistemi avanzati di gestione dei Sistemi Informativi

Installazione del JDK 6

Server Web. Apache Tomcat. Modalità di funzionamento. Autore: Roberto Fabbrica Diapo 1. Diapo 2. Diapo 3

DBMS e Linguaggi di programmazione nell'era di Internet

Architettura di un sistema operativo

Il web server Apache Lezione n. 3. Introduzione

Architetture Applicative

Sistemi Operativi STRUTTURA DEI SISTEMI OPERATIVI 3.1. Sistemi Operativi. D. Talia - UNICAL

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

Prima Esercitazione. Unix e GNU/Linux. GNU/Linux e linguaggio C. Stefano Monti smonti@deis.unibo.it

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Scrivere un programma in Java

Indice. Introduzione PARTE PRIMA IL FRAMEWORK DI JAVASERVER FACES 1

Sistemi Operativi di Rete. Sistemi Operativi di rete. Sistemi Operativi di rete

Introduzione al sistema operativo. Laboratorio Software C. Brandolese

Introduzione alla Virtualizzazione

Progetti F.O.S.S. Ieri e Oggi

Pacchettizzazione e distribuzione del software

Il sistema operativo TinyOS

Protezione. Protezione. Protezione. Obiettivi della protezione

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Traduzione ed esecuzione di programmi. Dispensa 08

Ingegneria del Software 1: Eclipse

Mono per sistemi embedded

En.Te.R. Team srl. Engineering Technology Research

TITLE Sistemi Operativi 1

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD

Guida di Installazione GCC

Introduzione al sistema operativo Il file system: file, directory,...

Il computer: primi elementi

Linux e Java. Installazione e uso di Java in un sistema Debian

Scuola Professionale e Filologica Geom. F.Borgogna Vercelli

Tale attività non è descritta in questa dispensa

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi

Sistemi avanzati di gestione dei Sistemi Informativi

2010 Ing. Punzenberger COPA-DATA Srl. Tutti i diritti riservati.

Addition X DataNet S.r.l.

Strumenti per lo sviluppo e la gestione di Ontologie

Introduzione alla Progettazione per Componenti

Il Sistema Operativo (1)

DATAMORFOSI. E la sintesi della strategia di prodotto di Webgate400.

Capitolo 3: Strutture dei sistemi operativi

Il Web Server e il protocollo HTTP

Architetture software. Virtualizzazione

Linux in ambito smartphone e introduzione

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Windows 8 Pro: per le piccole imprese

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

.EVERYWHERE LOGIN. entra nel futuro. partnership signed

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

marketing highlights Google Analytics A cura di: dott. Fabio Pinello

Software Open Source per sistemi embedded

la tua presenza e il tuo BUSINESS ON-LINE

WorkFLow (Gestione del flusso pratiche)

Virtualizzazione e Macchine Virtuali

Introduzione a Dev-C++

Linux Virtuale Linux Virtuale

Corso App modulo Android. Antonio Gallo

Setup e installazione

REALIZZAZIONE DI UN LABORATORIO REMOTO PER ESPERIENZE DI ROBOTICA EDUCATIVA: LATO CLIENT

Potenza Elaborativa, Sistemi Operativi e Virtualizzazione

pag. 1 ERP ad alta tecnologia per le migliori imprese italiane

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Guida all Installazione del ProxyFatturaPA

Total Security Knowledge Management Solution

SERVICE MANAGER. Architettura Client-Server e Web based di Servizi Specializzati per la Gestione di Periferiche e Connettività

VIRTUALIZZAZIONE. Docente: Marco Sechi Modulo 1

Una piattaforma LMS open-source: Claroline a cura di G.Cagni (Irre Piemonte)

Una novità di Microsoft per il lancio sul mercato di Microsoft Visual Studio 2005 è stata quella sia

Installazione e Configurazione della strumentazione necessaria. Antonio Gallo info@laboratoriolibero.com

ILMS. Integrated Learning Management System

Application Server per sviluppare applicazioni Java Enterprise

VPN RETI PRIVATE VIRTUALI: ACCESSO REMOTO

COME SVILUPPARE UN EFFICACE PIANO DI INTERNET MARKETING

lem logic enterprise manager

L i n u B e s t a Mario Di Raimondo

Josef Vitanostra INFORMATICA PARTHENOPE

Sistemi Operativi. Conclusioni e nuove frontiere

La Gestione Documentale. Integrazione con Microsoft Dynamics NAV. Mario Pavese. Sales Manager Soluzioni EDP

Guida alla documentazione italiana di Solaris Server per sistemi SPARC SMCC

Il linguaggio Java. Concetti base. I packages

soluzioni di e-business knowledge management

CLOUD SURVEY 2012: LO STATO DEL CLOUD COMPUTING IN ITALIA

Implementazione di un servizio VoIP in ambienti SOA per mobile computing

PROJECT MANAGEMENT SERVIZI DI PROJECT MANAGEMENT DI ELEVATA PROFESSIONALITÀ

Transcript:

Java & Linux

Perché Java e Linux? Linux è un ottimo sistema operativo, disponibile per piattaforme desktop, server e su sistemi embedded. Java è un ottimo linguaggio di programmazione, con una libreria molto ricca e una architettura che permette di scrivere codice multipiattaforma, per sistemi desktop, server e sistemi embedded. I maggiori strumenti di sviluppo per Java sono disponibili per Linux. Si tratta di versioni full, perfettamente funzionanti e ottimizzati per la piattaforma del pinguino. Il mercato alternativo dei sistemi embedded si sta orientando verso l accopiata Linux+Java per Internet Appliances e PDA.

Il passato

Il presente /1

Il presente /2 Sono disponibili estensioni HotSpot client e server che aumentano del 30% le prestazioni di esecuzione del bytecode. Sono disponibili tutte le tecnologie Java più avanzate: JDK 1.4 (con Enhanced AWT) Servlets Javacomm API Java Media Framework Numerosissime applicazioni Java sono distribuite con gli script di avvio per Linux

Il presente /3 Linux e Java sono i protagonisti della piattaforma MHP (Multimedia Home Platform) per la televisione digitale interattiva domestica I set-top box commerciali in via di sviluppo sono basati su una versione Linux Embedded come SO e su PersonalJava come ambiente applicativo. PersonalJava è la piattaforma di riferimento per le Internet Appliances (quali i dispositivi basati su EPOC Symbian, come il Nokia 9210 Communicator)

Il futuro E in via di rilascio il JDK 1.4 (attualmente in beta) che offre supporto nativo, tra l altro, alla modalità AWT Full Screen e al controllo dei wheel mouse Sono attualmente in studio le implementazioni a 64bit della Java Virtual Machine. I test attuali sono condotti su Solaris e Windows 64bit. Si attendono a breve le prime versioni per Linux Il rilascio della CDC/FoundationProfile/Personal Profile per la piattaforma Linux confermano il ruolo di primo piano nel settore delle Internet Appliances e dei PDA high-end.

Porting di Java /1 Il porting di Java richiede lo sviluppo di tre componenti principali: Il core della Java Virtual Machine (bytecode interpreter, memory manager, security manager) La core library (Java e Native) Il bridge dei componenti grafici La complessità della Virtual Machine e la vastità della core library rendono il porting di Java una impresa non banale

Porting di Java /2 JAVA APPLICATION CORE LIBRARY JAVA VIRTUAL MACHINE NATIVE CODE (AWT BRIDGE, SOCKET) HOST OPERATING SYSTEM

Porting di Java /3 Java Virtual Machine Contiene il codice che interpreta il bytecode delle classi Java, caricando e linkando dinamicamente il codice Gestisce la memoria attraverso il Garbage Collector Fornisce supporto alle applicazioni multithreading, attraverso meccanismi di green/native threading Core library Contiene la definizione della libreria standard di Java (java.lang, java.io, java.util ) Parte del codice è pure-java, mentre una parte delega l esecuzione al codice nativo AWT Bridge Mappa i componenti del package java.awt con i corrispondenti widget grafici del sistema operativo E una delle parti più complesse del porting. Su tale implementazione si basa la libreria Swing.

Porting di Java /4

Porting di Java /5

Porting di Java /6 Il progetto GNU CLASSPATH mira invece a produrre una versione completamente free della core class library. Il progetto è collegato allo sviluppo di JVM indipendenti (specie per ciò che riguarda le classi natiuve e di bridge) Maggiori informazioni si possono trovare sul sito http://www.classpath.org

La sfida: il porting su Linux Visti i presupposti, il porting di Java su Linux apparve come una vera e propria sfida Una delle primissime JVM sviluppate fu quella fornita con Netscape Navigator (i bei tempi ) Sun era l unica a disporre del codice sorgente della Java Virtual Machine Diverse aziende cominciarono a licenziare il codice di Sun, effettuando il porting della JVM su diversi sistemi operativi (essenzialmente varianti di Unix)

Il progetto Blackdown Randy Chapman e Steve Byrne svilupparono rispettivamente il JDK 1.0 e 1.1. Insieme a Karl Asha diedero vita al progetto Blackdown Sun decise di fornire al gruppo i sorgenti della JVM gratuitamente. Con la versione 1.2.2 Sun comincia a distribuire direttamente la propria versione del JDK per piattaforma x86 Il gruppo è ancora attivo nel porting della JVM su diverse architetture hardware (PPC, ARM )

Java Virtual Machine La Sun Java Virtual Machine è distribuita gratuitamente ed è sempre allineata con le corrispondenti versioni per Windows e Solaris. Il sorgente è disponibile sotto licenza SCSL (Sun Community Source Licence) che permette di conoscere il codice sorgente; qualsiasi utilizzo commerciale o distribuzione deve essere autorizzata (a pagamento!) da Sun.

Configurazione JVM su Linux L installazione della JVM è un operazione abbastanza semplice. La Sun distribuisce le JVM in formato rpm e bin. In rete è possibile trovare versioni compilate della JVM per diverse librerie di sistema (libc, glibc ). Come per qualsiasi altra applicazione distribuita in formato binario, è necessario verificare le librerie disponibili sulla propria macchina e selezionare la versione di JVM opportuna. Perché il JDK sia parte integrante del sistema è necessario effettuare alcune piccole impostazioni.

Configurazione JVM /1 I parametri responsabili del comportamento della JVM sono: CLASSPATH Specifica i percorsi (sia directory che file.zip e.jar) dove il ClassLoader della JVM cerca le classi. PATH Deve contenere una referenza alla directory bin del Java Development Kit. Permette di avere su linea di comando (e dunque a disposizione degli script) tutti gli strumenti di sviluppo.

Configurazione JVM /2 Gli altri parametri: BOOTCLASSPATH (da Java 1.2) Specifica la posizione della runtime library di sistema. Generalmente non si specifica mai (è implicito). E utilizzato pesantemente nello sviluppo per sistemi embedded (J2ME) per indicare alla JVM e al compilatore di non utilizzare le classi di sistema standard. JAVA_HOME E utilizzata da applicazioni di terze parti per individuare la posizione del JDK e poter utilizzare gli strumenti standard forniti con esso (ad esempio JAR).

JVM Multiple su Linux Spesso capita di dover disporre di più JVM diverse su una stessa macchina (ad esempio per testare una applicazione desktop e una per sistemi embedded in emulazione o per verificare il funzionamento di una stessa applicazione con JVM di diversi vendor). L uso di script per configurare opportunamente le variabili d ambiente permette di tenere completamente isolate JVM diverse. In altri ambienti non tutto così semplice :-)

Sviluppo in Java su Linux Possiamo individuare due categorie di applicazioni di sviluppo: Strumenti di sviluppo Ambienti di sviluppo Gli strumenti di sviluppo sono editor, compilatori, debugger, deployer, version control Gli ambienti di sviluppo integrano le funzioni di numerosi strumenti di sviluppo, permettendo una facile condivisione di codice e risorse Può sembrare banale ma non lo è (CLASSPATH, RMI )

Strumenti di sviluppo /1 Con il JDK sono forniti tutti gli strumenti di sviluppo classici per Java: JVM (java) Compilatore (javac) Generatore di header file per l interfacciamento a codice nativo (javah) Disassemblatore (javap) Debugger (jdb) Vi sono tool aggiuntivi, quali ad esempio: Estensioni Java per GCC (GJC) Estensioni per editor (xemacs) Compilatori alternativi (guavac, jikes)

Strumenti di sviluppo /2 Vista l ampia disponibilità di libreria e applicazioni, per assicurare compatibilità delle proprie applicazioni si consiglia di utilizzare sistemi di compilazione ed esecuzione ben collaudati e certificati Il download dinamico dalla rete, ad esempio, impone delle garanzie di compatibilità del bytecode (versioning) e di sicurezza

JVM disponibili Sono disponibili diverse Java Virtual Machine per la piattaforma Linux. Purtroppo quelle Open Source non hanno raggiunto maturità tale da consentirne l impiego in progetti importanti. Le maggiori applicazioni delle JVM Open Source si trovano nel mercato dei sistemi embedded, per i quali sono disponibili implementazioni avanzate ed estremamente ottimizzate della piattaforma Java. Tra le JVM disponibili: Sun JVM IBM JVM Kaffe Japhar

Ambienti di sviluppo Come detto, gli Integrated Development Enviroment permettono di semplificare, velocizzare e rendere più efficiente il processo di sviluppo. Per Linux sono disponibili un discreto numero di strumenti molto potenti. Poiché molti strumenti sono pure-java (come Argo, per la redazione di documenti UML) la sola disponibilità di una JVM aggiornata permette agli sviluppatori Linux di disporre delle stesse applicazioni del mondo Windows.

Borland JBuilder E un ambiente di sviluppo full-java semplice e completo, abbastanza veloce e facile da imparare. Fra tutti gli ambienti commerciali disponibili è quello più aggiornato (in termini di librerie di support) e user friendly. E distribuito gratuitamente per usi non commerciali (JBuilder Personal). Sono in via di sviluppo interessantissime estensioni per sistemi embedded (J2ME) Non esiste una versione OpenSource.

Borland JBuilder

IBM Visual Age for Java E un ambiente di sviluppo molto sofisticato e, per certi versi, atipico. Richiede un po di training per dominarlo (specie se si proviene da JBuilder ), ma una volta acquisito permette livelli di produttività molto elevati. Ha un ottimo sistema di gestione di gruppi di lavoro e di versioning del codice. La versione Entry 3 è disponibile per Linux, mentre la versione Entry 4 è attualmente disponibile solo per Windows. E in via di rilascio la versione per Linux. Non esiste una versione OpenSource.

IBM Visual Age Micro Edition IBM ha sviluppato una architettura (J9) per l uso di Java su sistemi embedded eterogenei. Il progetto ha portato alla realizzazione di una Virtual Machine e di un compilatore estremamente specializzati e performanti. E un ambiente di sviluppo Java per sistemi embedded. Comprende un IDE (per Linux e Windows) Le J9VM supportano molti sistemi (Linux, WindowsCE, Windows Embedded, QNX ) e architetture hardware (x86, ARM, MIPS, PPC ) E distribuito solo gratuitamente! Non esiste una versione Open Source.

Netbeans /1 E un Integrated Development Environment interamente scritto in Java Nato nel 1996 nella Repubblica Ceca ad opera di alcuni studenti, è diventato un breve tempo un prodotto commerciale Nel 1999 esce la versione 3.0, che porterà Sun ad acquistare il prodotto e inserirlo nelle proprie linee di produzione Nel 2000 Sun rilascia Forte, un potente IDE basato su Netbeans e contemporaneamente rilascia Netbeans come prodotto OpenSource

Netbeans /2

Eclipse E un progetto analogo a Netbeans. Inizialmente sviluppato da IBM, è stato convertito in un grosso progetto Open Source, che coinvolge centinaia di sviluppatori e aziende. Utilizza una architettura a componenti che lo rende estensibile e personalizzabile E basato su una sofisticata libreria di componenti nativi multipiattaforma (Grande AWT!!!) E un prodotto relativamente giovane

Eclipse

Quale ambiente? La scelta dell ambiente di sviluppo è legata a quattro fattori principali: 1. Obiettivi dello sviluppo: l ambiente utilizzato deve fornire supporto a tutte le tecnologie utilizzate 2. Prestazioni e produttività dell ambiente di sviluppo 3. Integrazione con strumenti di team working 4. Costo Allo stato attuale non esiste un prodotto che soddisfa completamente tutti i quattro parametri (ma neppure tre )

Conclusioni Linux mantiene le promesse, dimostrandosi un ottimo sistema operativo per applicazioni server e desktop. Java mantiene le promesse, dimostrando di essere realmente multipiattaforma e altamente scalabile. La programmazione Java in ambiente Linux è supportata da numerosi strumenti: questo permette di affrontare serenamente lo sviluppo di progetti complessi. Pur mancando la disponibilità di ambienti professionali Open Source, l ampia disponibilità di strumenti commerciali distribuiti gratuitamente (a scopo di studio) fornisce alla comunità degli sviluppatori (e degli appassionati) importanti occasioni di crescita.

Link Java Virtual Machine for Linux: Sun: http://java.sun.com IBM: http://www.ibm.com Japhar: http://www.japhar.org Kaffe: http://www.kaffe.org Eclipse: http://www.eclipse.org JBuilder: http://www.borland.com/jbuilder NetBeans: http://www.netbeans.org VisualAge: http://www.ibm.com/software/vadd http://www.ibm.com/linux http://www.ibm.com/developerworks http://www.embedded.oti.com

Bibliografia Titolo Autore Editore Learning Java P. Niemeyer et al. O Reilly Java in a nutshell Java examples in a nutshell Thinking in Java Java Language Specification Java Virtual Machine Specification Java Programming on Linux David Flanagan David Flanagan Bruce Eckel J. Gosling et al. T. Lindholm et al. Nathan Meyer O Reilly O Reilly EckelObject Sun Press Sun Press Waite Group

That s all, folks! Stefano Sanna gerda_at_crs4_dot_it