Mokabyte

Dal 1996, architetture, metodologie, sviluppo software

  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti
Menu
  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti
Cerca
Chiudi

Nel numero:

101 novembre
, anno 2005

Java diventa nativo, grazie a Red Hat

Il supporto di Java su Linux

Avatar

Massimiliano Bigatti

Massimiliano Bigatti è sviluppatore senior, autore tecnico e appassionato di fotografia.
Certificato, tra le altre, come SUN Certified Enterprise Architect for Java2 Enterprise
Edition Technology, lavora presso un importante business solution provider.
Nel tempo libero scrive per diverse riviste di informatica e ha scritto una decina di libri,
quasi tutti su Java, tra cui "Java e Open Source", Tecniche Nuove 2005.
Il suo sito personale è raggiungibile all‘indirizzo www.bigatti.it.

MokaByte

Java diventa nativo, grazie a Red Hat

Il supporto di Java su Linux

Massimiliano Bigatti

Massimiliano Bigatti

  • Questo articolo parla di: Java, Programmazione & Linguaggi

L‘azienda dal cappello rosso sta lavorando all‘implementazione di Java su Linux. La strada non è però quella dinamica e basata su Virtual Machine indicata da SUN, ma un approccio legato maggiormente alla storia di C e C++, basato sulla compilazione in codice nativo. Sarà una strada vincente?

Il supporto di Java su Linux è stato un problema aperto per anni. Grazie alle implementazioni di Blackdown (www.blackdown.org) gli sviluppatori che utilizzavano il sistema operativo del pinguino hanno potuto utilizzare il linguaggio di SUN Microsystems anche sul loro sistema operativo preferito. Anche chi scrive, diversi anni fa, provò una delle prime versioni dell‘implementazione di Blackdown su un sistema Red Hat. Il risultato non fu esaltante: le prestazioni sembravano inferiori alla corrispondente accoppiata Windows+JVM SUN, utilizzando sempre lo stesso PC.
D‘altra parte, probabilmente il numero di ingegneri che SUN impiega per ottimizzare la propria implementazione è decisamente superiore a quelli disposti a lavorare al progetto open source di Blackdown. Inoltre, il supporto alle API era incompleto. Si pensi a cosa vuol dire reimplementare da zero tutta la libreria di base del linguaggio. Ad ogni modo, oggi Blackdown ha completato diversi porting di Java: 1.2.2, 1.3, 14.2. Oggi sta lavorando alla versione 1.5. Il bello è che il codice nativo sarà  disponibile per X86, AMD64, SPARC e PPC. (Per inciso Blackdown ha anche realizzato il porting di Java3D, JAI e JMF, tutte API che contengono codice nativo).
Ma da qualche anno Blackdown ha cominciato ad avere un peso inferiore: SUN ha infatti deciso di supportare pienamente la piattaforma Linux, insieme a Windows e Solaris. Questo nonostante il fatto che solo pochi mesi prima James Goslig, parlando per l‘azienda, si ponesse molti problemi (di Linux non c‘è ne è uno solo, bisogna far attenzione a come lo si implementa, è difficile, e così via).
Oggi Java 5.0 di SUN è disponibile per Windows (x86 e SPARC), Solaris (x86 e SPARC), Linux (x86 e AMD64).
Con il supporto ufficiale dell‘azienda che produce il linguaggio, la situazione per gli sviluppatori Linux è decisamente migliorata. Ma oggi c‘è una possibilità  in più.

GNU e compilazione

Vi ricordate GCC? È il compilatore GNU per C, C++, Objective-C, Fortran e Ada. E da qualche tempo anche per Java. Questo compilatore, chiamato gcj, è il cuore della soluzione di Red Hat.
Scrivere un compilatore per il linguaggio Java che, invece di produrre bytecode, generi del codice oggetto trasformabile da un normale linker in un eseguibile, non è un affare troppo complesso. Un compilatore ad alte prestazioni, che produce però bytecode, lo ha realizzato anche IBM, ed ora è un progetto open source (Jikes, http://jikes.sourceforge.net/). L‘obiettivo dei due progetti non è lo stesso, ma il punto è che la compilazione di un linguaggio non è la parte più complessa, soprattutto se stiamo parlando della piattaforma Java.
La parte più impegnativa è infatti la libreria di base. Il compilatore gcj si basa appunto su GNU Classpath (http://www.gnu.org/software/classpath/), un progetto nato da diversi anni con lo scopo di fornire una completa implementazione libera di tutte le classi della piattaforma Java. La libreria non è completa al 100%, ma contiene gli elementi essenziali per eseguire alcune applicazioni.

L‘importante è il software

Ad oggi gcj è in grado di compilare le proprie librerie in codice nativo e produrre delle librerie condivise in grado di sostituire i JAR. I programmi a riga di comando di supporto permettono di costruire un database globale (a cui si accede in scrittura solo come root) di tutte le librerie condivise. Ad esempio, i seguenti comandi compilano il package mypackage.jar, lo inseriscono nel database e poi eseguono la classe principale:

gcj -shared -findirect-dispatch -fjni -fPIC -Wl,-Bsymbolic mypackage.jar  -o mypackage.jar.sogcj-dbtool -a `gcj-dbtool -p` mypackage.jar mypackage.jar.sojava -cp mypackage.jar com.mypackage.Main

L‘ultimo comando avvia il programma ed utilizza in automatico la libreria condivisa .so creata al primo passaggio.
Bello, ma quali programmi è possibile compilare? A parte nel nostre “innocue” librerie di classi, che non facciano un uso troppo avanzato delle API Java, gcj è in grado di compilare (e sono inclusi in Fedora Core):

  • Eclipse completo di plugin per la programmazione C/C++, Python e Bugzilla;
  • Tomcat;
  • Ant;
  • Le parti Java di OpenOffice.

Pochi nomi, ma illustri. E sicuramente non software “facile”. Ci sono dunque buone speranze, ma ancora tanti problemi.

Molte limitazioni

Uno dei problemi principali di questo approccio è che non è possibile effettuare il debug delle applicazioni con gli strumenti a cui siamo abituati. In poche parole, non è possibile utilizzare il debug di Eclipse e l‘unica possibilità  è quella di utilizzare gdb. Chi scrive, francamente, ha preferito rinunciare ad impararlo, anche se non ci sono dubbi che sia un ottimo strumento. È forse solo un po‘ ostico da utilizzare.
Il problema grosso è poi l‘aggiornamento. La libreria di base non è completa (al 95% in confronto al JDK 1.4, all‘85% in confronto all‘1.5). Il compilatore poi è fermo alla versione 1.4: non supporta le nuove caratteristiche della versione 1.5.

Cosa riserva il futuro?

Pare che il lavoro per agguantare quell‘ultimo 15% sia in corso. Ed onestamente, in determinati ambienti (quelli lavorativi), molti sono ancora fermi alla versione 1.3 o alla 1.4. Forse inseguire l‘ultima versione non è poi il requisito più importante; forse è più rilevante che il software sia stabile e privo di bug. Oltre alle migliorie alla libreria ed al compilatore, Red Hat sta lavorando all‘inclusione di ulteriori librerie e software a Fedora Core. In particolare, JOnAS, Azureus, RSSOwl.

Conclusioni

Siamo dunque vicini ad una piccola rivoluzione? In realtà  la strada dalla compilazione nativa è già  stata tentata in passato [2], ma è sostanzialmente miseramente fallita. Dai primi anni di introduzione del linguaggio in molti si sono prodigati per la realizzazione di un compilatore Java, ma con poco successo. Abbiamo visto quali sono gli elementi di complessità  relativi ad una infrastruttura del genere, e per un‘azienda significa investire molto per poter ottenere un prodotto stabile e performante. Oggi molte di queste aziende non offrono più VM con caratteristiche di compilazione. Ne è rimasta solo una e non è chiaro se il motivo è che semplicemente ha sbaragliato il mercato del “Java nativo”, oppure se questo mercato, semplicemente, non c‘è.

Riferimenti bibliografici

[1] Tom Tromey “The State of Java on Linux” RedHat Magazine
http://www.redhat.com/magazine/012oct05/features/java/

[2] Ian Kaplan “Web Pages related to Compiling the Java Programming Language” http://www.bearcave.com/software/java/comp_java.html

Facebook
Twitter
LinkedIn
Avatar

Massimiliano Bigatti

Massimiliano Bigatti è sviluppatore senior, autore tecnico e appassionato di fotografia.
Certificato, tra le altre, come SUN Certified Enterprise Architect for Java2 Enterprise
Edition Technology, lavora presso un importante business solution provider.
Nel tempo libero scrive per diverse riviste di informatica e ha scritto una decina di libri,
quasi tutti su Java, tra cui "Java e Open Source", Tecniche Nuove 2005.
Il suo sito personale è raggiungibile all‘indirizzo www.bigatti.it.

Massimiliano Bigatti

Massimiliano Bigatti

Massimiliano Bigatti è sviluppatore senior, autore tecnico e appassionato di fotografia. Certificato, tra le altre, come SUN Certified Enterprise Architect for Java2 Enterprise Edition Technology, lavora presso un importante business solution provider. Nel tempo libero scrive per diverse riviste di informatica e ha scritto una decina di libri, quasi tutti su Java, tra cui "Java e Open Source", Tecniche Nuove 2005. Il suo sito personale è raggiungibile all‘indirizzo www.bigatti.it.
Tutti gli articoli
Nello stesso numero
Loading...

Applicazioni Desktop

Finestre delle preferenze

Controllo a distanza

Governare un‘applicazione usando i comandi batch

La Reflection in Java

Parte I: una buona conoscenza dei tipi parametrici

Oggetti persistenti con Hibernate

Un approccio alla persistenza puramente a oggetti

Service Oriented Architecture

Parte II: metodologia

Process Oriented Development: il processo alla base dello sviluppo

Parte II: aproccio diverso ai requisiti business

Java Business Integration

Parte II: Component Framework e Service Engine

Gestione delle risorse all‘interno degli application server

Evitare comportamenti difficilmente tracciabili

Integration Patterns

Parte II

Nella stessa serie
Loading...

Digital revolution: trasformare le aziende in ecosistemi digitali

III parte: Dagli obiettivi strategici alle iniziative operative

Digital revolution: La teoria

Tema 2: Il framework OKR

Digital revolution: trasformare le aziende in ecosistemi digitali

II parte: Un workshop per definire la vision

Bitcoin, blockchain e criptovaluta

V parte: Come funziona Bitcoin. Transazioni e UTXO

Digital revolution: La teoria

Tema 1: Approccio Scrum-like alle trasformazioni organizzative

Digital revolution: trasformare le aziende in ecosistemi digitali

I parte: Primo incontro.

Bitcoin, blockchain e criptovaluta

IV parte: Come funziona Bitcoin. Chiavi, indirizzi e wallet

Che cosa significa fare una trasformazione agile?

II parte: Le buone pratiche

Bitcoin, blockchain e criptovaluta

III parte: Come funziona Bitcoin. Rete e crittografia

Che cosa significa fare una trasformazione agile?

I parte: Le indispensabili premesse

Oltre Google Maps?

Una nuova alleanza per le mappe digitali

“Babbo… Ma te che lavoro fai?”

Come spiegare a un bambino (e alla sua maestra) il mestiere dell'agile coach

Bitcoin, blockchain e criptovaluta

II parte: Perché è nato Bitcoin

Microservizi: non solo tecnologia

Quanto influiscono sul business?

LEGO® Serious Play®

Che cosa è il metodo LSP?

State of Agile 2022

Qualche considerazione sul 16° rapporto

Bitcoin, blockchain e criptovaluta

I parte: Breve storia del denaro

Stili di leadership per l’agilità

Oltre il comando e controllo

Effetto Forrester e dinamiche dei sistemi di produzione

La storiella di una birra per comprendere il Lean

Fare “il tagliando” a Scrum

A due anni dalla pubblicazione della nuova guida

Veicoli elettrici ed esperienza utente

II parte: Riflessioni su app e UX

OKR, cadenze in Kanban e Flight Levels

Uscire dalla trappola dell’agilità locale

Continuous Delivery per il proprio team di sviluppo

Principi e pratiche

Il contratto è agile!

Gli elementi del contratto e l'Agilità

Mokabyte

MokaByte è una rivista online nata nel 1996, dedicata alla comunità degli sviluppatori java.
La rivista tratta di vari argomenti, tra cui architetture enterprise e integrazione, metodologie di sviluppo lean/agile e aspetti sociali e culturali del web.

Imola Informatica

MokaByte è un marchio registrato da:
Imola Informatica S.P.A.
Via Selice 66/a 40026 Imola (BO)
C.F. e Iscriz. Registro imprese BO 03351570373
P.I. 00614381200
Cap. Soc. euro 100.000,00 i.v.

Privacy | Cookie Policy

Contatti

Contattaci tramite la nostra pagina contatti, oppure scrivendo a redazione@mokabyte.it

Seguici sui social

Facebook Linkedin Rss
Imola Informatica
Mokabyte