Gentili utenti vi informiamo che il team di MyTech si è spostato sul canale Hitech & Scienza di Panorama.it

      non hai uno username? regìstrati   /   recupera la password

apple / google / microsoft
unmapped

Kylix, un ambiente Rad in Delphi per Linux

Scritto da Daniele Zucchelli

Il sistema di sviluppo è proposto in tre versioni, una gratuita e disponibile sul sito Borland
Dopo alterne vicende societarie, Borland è tornata, dopo la parentesi Inprise, alla denominazione che ha contraddistinto la società fin dai tempi della commercializzazione di TurboPascal per Ms-Dos, ed ha ufficializzato il rilascio del primo ambiente di sviluppo Rad (Rapid Application Development) per Linux. In questi ultimi mesi Pc Professionale ha seguito con un certo interesse lo svolgersi degli eventi in relazione a questo pacchetto: gli sviluppatori sanno come una delle principali mancanze del sistema operativo del pinguino sia quella che concerne gli ambienti di sviluppo integrati, ormai da tempo diffusi su altre piattaforme. Pur non avendo mantenuto tutte le promesse fatte al LinuxWorld Expo di New York, ove venne presentato come un ambiente in grado di gestire progetti cross-platform C++ Builder e Delphi, avremo modo di dimostrare come l’ambiente Kylix si basi essenzialmente su Delphi e sia dotato di notevoli potenzialità per lo sviluppo di una vasta serie di applicazioni. Il prodotto è disponibile in tre diverse edizioni: la Open Edition sarà riservata esclusivamente allo sviluppo di prodotti Open Source di software free. Potrà essere scaricata gratuitamente oppure ordinata al prezzo di 99 dollari comprensivi del Cd-Rom e del manuale cartaceo – questa edizione sarà disponibile entro la seconda metà del 2001. Sono invece già in commercio le edizioni Desktop Developer – per la creazione di applicazioni professionali – e Server Developer che si rivolge ai professionisti e alle aziende e che include l’integrazione con il server Web Apache e i principali database server Oracle, Ibm Db2, MySql e InterBase. Le edizioni Desktop Developer e Server Developer sono disponibili rispettivamente al prezzo di 999 dollari e 1.999 dollari.

> Introduzione

Il nome di Borland ha radici lontane: già nel 1983 questa azienda otteneva un grande successo grazie al rilascio del compilatore per il linguaggio Pascal TurboPascal 1.0, il quale produceva eseguibili per piattaforma Dos su un qualunque Pc XT. Il linguaggio Pascal, i cui pregi risiedono in una sintassi relativamente semplice abbinata ad una semantica che impone una programmazione elegante e strutturata, si è molto evoluto nel corso degli anni: il corso della sua evoluzione lo ha portato a originare Delphi, che potrebbe essere definito un linguaggio Pascal che adotta i paradigmi della programmazione ad oggetti. Kylix altri non è che un ambiente di sviluppo completo per il linguaggio Delphi sotto Linux: esso ha un ruolo simile, per intendersi, a quello che possono rivestire Visual Basic di Microsoft oppure C++Builder della stessa Borland per gli ambienti Windows. L’installazione del prodotto non richiede particolari sforzi: è sufficiente lanciare uno script, disponibile sul Cd-Rom oppure scaricabile dal sito dell’azienda produttrice, atto a verificare che il sistema Linux in nostro possesso disponga dei requisiti necessari per ospitare l’ambiente di sviluppo. In particolare, viene verificata la presenza di un server grafico, la corretta versione delle librerie glibc – è necessario disporre di una versione successiva alla 2.1.2 – delle librerie libjpeg (6.2 o successive) e del kernel (2.2.x o successivi). Il prodotto è stato provato da Pc Professionale sulle distribuzioni Red Hat 7.1, oltre che SuSE 7.1: l’installazione non ha richiesto alcun tipo di aggiornamento.
Distribuzioni meno recenti potrebbero tuttavia presentare qualche problema in più: sul Cd-Rom contenente il programma di installazione si potranno trovare gli update che occorrono per installare il prodotto in caso di distribuzioni Mandrake 7.2, Red Hat 6.2 e 7.0 e SuSE 7.0. Gli utenti di altre piattaforme dovranno procedere manualmente agli aggiornamenti necessari segnalati sul manuale oppure dallo script sopra citato.

> Il primo avvio: impressioni

Una volta lanciato l’Ide con il semplice comando startkylix, ci si trova immersi in un ambiente molto simile a quello rappresentato in figura 1. Gli elementi che compongono l’ambiente sono diversi, e lo schermo, già al primo avvio, si presenta popolato da molte finestre. Naturalmente, come ogni ambiente di sviluppo, il ruolo centrale è svolto dal cosiddetto code editor, ovvero la finestra attraverso la quale è possibile inserire le linee di codice: questo è dotato di tutte le comodità del caso. Il programmatore ha a disposizione numerosi shortcut per ritrovare immediatamente la definizione di un identificatore e per muoversi rapidamente dalla dichiarazione della procedura alla sua implementazione. Le funzionalità di spostamento rapido all’interno del codice sono molte: il tool che verrà utilizzato allo scopo è code explorer, il quale permette di ottenere una visione strutturata del codice. Code explorer implementa infatti una struttura ad albero che permette di navigare rapidamente fra tipi, classi, metodi, proprietà, variabili globali ed ogni routine del codice. Il code editor è inoltre dotato di funzionalità di code completion: sarà sufficiente digitare il nome dell’istanza della classe per ottenere una lista dei metodi, proprietà o eventi associati all’oggetto cui si sta facendo riferimento. Una volta selezionato il metodo opportuno, l’editor stesso provvederà a informarci sugli eventuali parametri che è necessario siano passati alla funzione. L’editor utilizza in maniera intelligente i tooltip per mostrare la dichiarazione degli identificatori in fase di editing e per mostrare il contenuto delle variabili in fase di debugging. Che Kylix sia un ambiente orientato agli oggetti lo si può facilmente notare dalla presenza di tool quali il class completion, che permette di costruire uno scheletro di struttura a partire da una dichiarazione di classe inserendo il codice necessario per gestire metodi, eventi e proprietà ed assegnare i corretti attributi agli stessi. Il class completion può essere anche utilizzato per creare dichiarazioni di classi a partire da metodi già implementati. Come ogni ambiente Rad che si rispetti, l’Ide non manca dei tool necessari per il design rapido delle interfacce utente (form designer e object inspector) e per l’aggiunta di componenti al progetto (component palette). Il component palette raccoglie e organizza in gruppi di icone, suddivisi fra loro a seconda delle funzionalità fornite, i componenti CLX (visuali o meno) che possono essere inclusi nel design dell’interfaccia. Ogni componente aggiunto al progetto dispone dei suoi specifici attributi (proprietà, eventi e metodi) che potranno essere controllati dall’applicazione. Una volta selezionati, i componenti potranno essere disposti all’interno del progetto grazie al form designer e se ne potranno controllare le proprietà design-time grazie all’object inspector, che fungerà anche da event handler in grado di associare agli eventi predefiniti le funzioni implementate dallo sviluppatore. Kylix ha inoltre la possibilità di creare un particolare contenitore il cui nome è frame: esso fornisce, rispetto alla consueta form, una maggior riutilizzabilità del codice. Il frame potrà essere salvato come componente e incluso nella component palette così da poter essere inserito dentro una form, un altro frame oppure un altro componente. Va notato come un frame inserito in un altro frame o in una form continuerà ad ereditare le modifiche fatte al frame da cui deriva, comportandosi così come un qualunque componente esterno.

> L’object repository

Con Kylix potranno essere create una quantità veramente vasta di applicazioni: è sufficiente selezionare dal menu File la voce New perché compaia la finestra chiamata object repository che visualizzerà una lista di icone che rappresentano form, moduli, wizard e applicazioni d’esempio che potranno essere inseriti nel progetto per semplificare la vita dello sviluppatore. Gli oggetti dell’object repository potranno essere copiati nel progetto corrente, ereditati – nel qual caso una modifica all’oggetto originale si ripercuoterà anche sull’oggetto incluso nel progetto – oppure usati – in quest’ultimo caso una modifica sull’oggetto inserito nel progetto verrà ereditata dall’oggetto sorgente. Gli oggetti inclusi nell’object repository potranno essere dei semplici template oppure complesse applicazioni: il tutto è naturalmente volto a favorire la riutilizzabilità del codice.
Lo sviluppatore è infatti in grado di aggiungere i propri oggetti all’object repository così da poter condividere o riutilizzare il codice: sarà dunque più semplice sviluppare applicazioni dotate di interfacce omogenee oppure crearsi una libreria di funzionalità di base atte a ridurre i tempi di sviluppo e a migliorare la qualità dell’applicazione.

> Progetti e tipi di applicazioni

Un progetto è in Kylix una collezione di file: alcuni sono generati al momento dello sviluppo dell’interfaccia (design time), altri quando viene compilato il codice sorgente. Kylix permette di sviluppare una quantità veramente vasta di tipologie di progetti: tutte le edizioni di Kylix supportano gli oggetti per creare applicazioni grafiche, console e shared object (.so). L’edizione server supporta applicazioni server e distribuite, applicazioni Web e database.

> Applicazioni database

Per quanto concerne le applicazioni che necessitano di interagire con i database, Kylix introduce la tecnologia dbExpress per l’accesso ai dati: essa include non solo i driver nativi per la connessione ai database Sql Db2 di Ibm, InterBase, MySql e Oracle, ma anche una serie di oggetti per gestire il flusso di dati. In particolare, oltre al componente SQLConnection, sono gestiti gli oggetti DataSet, DataSetProvider e ClientDataSet per il recupero dei dati. Vale la pena di entrare un poco più nel dettaglio dell’architettura dbExpress, che a nostro parere personale non è del tutto convincente: l’oggetto DataSet restituisce infatti una collezione di record a sola lettura ed è dotato di un unico cursore unidirezionale (forward-only). La struttura è dunque adatta esclusivamente alla lettura dei risultati di un’interrogazione Sql. Nel caso sia necessario disporre di funzionalità più complesse, come cursori multidirezionali oppure la possibilità di effettuare l’editing del dataset per effettuare operazioni di update, dbExpress fornisce unicamente la possibilità di utilizzare gli oggetti DataSetProvider e ClientDataSet che richiedono al server i record e spostano il carico dell’elaborazione completamente sul client. Se questo approccio può fornire risultati positivi sotto alcuni aspetti, in quanto il server Sql viene completamente liberato dalla necessità di effettuare lock sulle tabelle e sono così garantite maggiori possibilità di accesso concorrente ai dati, si ottiene tuttavia lo sgradevole effetto collaterale di scaricare sul client una notevole mole di problemi, quali la gestione del caching dei dati in caso di accesso a dataset di dimensioni particolarmente estese e, soprattutto, la gestione delle eccezioni nel caso in cui altre fonti modifichino i dati sul server Sql prima che il dataset che risiede sull’applicazione client possa effettuare le opportune operazioni di update. Questa architettura espone lo sviluppatore a notevoli problemi e al rischio di creare inconsistenza di dati qualora non gestisca nella maniera più opportuna le eccezioni generate dall’applicazione client. Sebbene l’architettura dbExpress non abbia riscosso la nostra approvazione da questo punto di vista, occorre tuttavia sottolineare come l’oggetto ClientDataSet sia in grado di restituire i record in formato binario e in Xml. Questa gradita potenzialità permette di sfruttare i benefici del linguaggo Xsl per effettuare rapide sottointerrogazioni al dataset senza gravare il server Sql di ulteriori carichi elaborativi.

> Applicazioni Web e orientate alla rete

Con Kylix Server è possibile sviluppare applicazioni che estendono le funzionalità del server Web Apache: una tipica applicazione Web riceve le richieste Http inviate al server Web, effettua le operazioni del caso e invia al server Web la risposta che poi esso provvederà a comunicare al client. Kylix permette di creare applicazioni Web Cgi (Common gateway interface) e Dso (Dynamic Share Object) fornendo al programmatore una serie veramente completa di oggetti e classi per l’interazione con i protocolli di rete e con il server Web. Tra i controlli forniti dalla libreria NetCLX troviamo tutti quelli necessari a gestire le request e i response di Apache, oltre che i moduli client e server per numerosi protocolli a livello applicazione, quali Ftp, Http, Smtp, Dns e così via. Sono disponibili anche Api a basso livello per la gestione delle socket Tcp e Udp cosicché lo sviluppatore possa creare autonomamente il proprio protocollo di comunicazione. È veramente impressionante la quantità di oggetti relativi alle architetture di rete inclusi in Kylix: è comunque opportuno ricordare che l’edizione in nostro possesso (Server Developer) è quella in assoluto più completa da questo punto di vista: alcuni componenti da noi provati potrebbero infatti essere del tutto assenti nelle edizioni minori.

> Le classi CLX

Kylix giunge corredato da una libreria di classi costituita da oggetti, alcuni dei quali sono componenti o controlli, che il programmatore può utilizzare nella scrittura del codice. Questa libreria, chiamata Borland Component Library for Cross Platform (CLX), include oggetti visibili run-time (come i common controls e gli altri elementi che possono caratterizzare l’interfaccia) e controlli non visibili come i dataset e i timer. I componenti che caratterizzano questa libreria sono altamente incapsulati: per esempio, i pulsanti sono preprogrammati per rispondere a un click del mouse lanciando l’evento OnClick.
In questo modo utilizzando un pulsante standard CLX il programmatore non dovrà scrivere la routine di gestione dell’evento “click del mouse”, ma potrà concentrarsi sulla logica dell’applicazione che verrà eseguita in risposta all’evento medesimo. La libreria di classi CLX dovrebbe inoltre avere lo scopo di rendere più semplice il porting delle applicazioni sulle diverse piattaforme: frapponendosi tra l’applicazione e il sistema operativo essa agisce come un wrapper alle chiamate di sistema. Teoricamente, disponendo di una libreria CLX per ogni sistema operativo, dovrebbe essere sufficiente ricompilare il codice sorgente delle applicazioni per ottenere eseguibili perfettamente funzionanti.

> Esecuzione e debugging

Terminata la scrittura del codice sorgente, è necessario passare alla fase di debugging per testare e rendere priva di errori la propria applicazione. Kylix è corredato da un debugger integrato che, pur privo delle funzionalità più avanzate proprie dei compilatori C/C++ più evoluti (break point condizionali, esecuzione step-by-step backward), svolge egregiamente il suo compito. Il debugger integrato è infatti in grado di fornire funzionalità di esecuzione passo-passo, break point, visualizzazione dello stack e delle variabili, dei thread e così via. L’edizione Server Developer provata da Pc Professionale dispone della versione più completa del debugger integrato: occorre notare come alcune funzionalità potrebbero essere assenti nelle edizioni minori di questo pacchetto.

> Conclusioni

L’ambiente di sviluppo integrato di Borland è senz’altro il migliore fra quelli disponibili sotto Linux, in verità piuttosto pochi: il linguaggio Delphi è senz’altro maturo e ben conosciuto, oltre che adatto alla filosofia di sviluppo Rad. La libreria di classi CLX ci è parsa molto funzionale e completa di tutto ciò che uno sviluppatore potrebbe richiedere. I componenti visuali sono indipendenti dal desktop manager utilizzato (sia esso Kde, Gnome o altri): questo per garantire la compatibilità delle applicazioni desktop in ogni ambiente e per poter integrare le routine di gestione degli eventi nei componenti CLX medesimi. Se l’obiettivo è quello di mettere in condizioni un team di sviluppatori C/C++ di sviluppare applicazioni sofisticate, in cui la performance è il primo obiettivo e lo sviluppo dell’interfaccia utente è solo un aspetto marginale, Kylix non è probabilmente la risposta giusta. Delphi non è comunque un linguaggio di programmazione semplice: è strutturato e orientato agli oggetti, simile per certi versi a Java, flessibile ed elegante grazie alla sua gestione delle classi e delle eccezioni, che permette un’elevata riutilizzabilità del codice. Gli sviluppatori dotati di una certa esperienza su una piattaforma Windows (e che abbiano magari già utilizzato Delphi o Visual Basic) si troveranno sicuramente a loro agio: la scelta di Kylix è in questi casi senz’altro da consigliare. In particolar modo, Kylix è sicuramente una splendida scelta per lo sviluppo di applicazioni per uso interno – un ambito dove è necessario produrre una quantità elevata di piccole applicazioni in tempi molto brevi.

Commenti   (Inserisci un commento)

Ancora nessun commento.

Effettua il login