Un primo sguardo all'IDE JBuilder di Borland

Nel giugno 1995, quando ho sentito per la prima volta che Borland stava per realizzare uno strumento Java, sono rimasto piuttosto soddisfatto. Borland è stata l'unica azienda che ha intaccato il franchise di Visual Basic che Microsoft aveva creato. Inoltre, l'ambiente di sviluppo Delphi di Borland è considerato da molti (me compreso) il miglior strumento di sviluppo rapido di applicazioni (RAD) sul mercato. Quindi è stato con grande entusiasmo che ho acquistato Borland C ++ 5.0 con supporto Java alla fine del '95.

Sfortunatamente, lo sforzo di Borland lasciava molto a desiderare. Uno dei maggiori svantaggi del prodotto era che il supporto Java era un modulo aggiuntivo per C ++, piuttosto che essere uno strumento a sé stante. Il problema con questo approccio è che Java non era molto simile a C ++ in termini di unità di compilazione, file oggetto e obiettivi di compilazione. In Java si compila un file di classe in un oggetto che è possibile istanziare immediatamente con altri oggetti già presenti nel sistema. Non ci sono destinazioni ".exe" e ".dll", che sono il modello utilizzato dall'IDE C ++ generico. Pertanto, la creazione di classi era ingombrante, la documentazione era quasi inesistente e l'esperienza era del tutto insoddisfacente. Il compilatore C ++ ha funzionato benissimo però.

Sulla scia del prodotto aggiuntivo C ++, si è rapidamente sparsa la voce su "Latte", il nome in codice di un ambiente IDE su cui avrebbero lavorato gli ingegneri del gruppo Delphi e che è stato scritto completamente in Java. L'ambizioso progetto è stato afflitto da ritardi; ha fatto una dimostrazione alla prima JavaOne Developer Conference di San Francisco nel 1996 e poi di nuovo a JavaOne '97. Infine, è stato rilasciato come JBuilder.

Un rapido tour di JBuilder

JBuilder condivide molti temi comuni con il mondo Delphi e si sente abbastanza simile agli strumenti di Symantec Visual Cafe. Quindi è stato facile per me iniziare con JBuilder, anche senza leggere la documentazione fornita. (Quando ho fatto una domanda, la documentazione era abbastanza completo in termini di descrivere le opzioni disponibili.)

L'ambiente è costituito da una "barra di controllo", che è una finestra della barra degli strumenti mobile, una "finestra di navigazione" con un controllo ad albero a strati a sinistra e una finestra di visualizzazione a destra. C'è solo una barra di controllo, ma è possibile aprire diverse finestre del browser.

La barra di controllo, mostrata di seguito, è costituita dai comandi di menu standard nella parte superiore, una tavolozza di strumenti sulla sinistra che fornisce collegamenti alle voci di menu e una raccolta di componenti (JavaBeans) disponibili per l'uso nell'applicazione visiva o applet. Sotto la tavolozza degli strumenti e i componenti è presente una riga di stato che viene aggiornata con l'attività in corso nell'ora corrente.

La finestra del browser è mostrata di seguito. Questa finestra è dove interagisci con il tuo codice sorgente, HTML o Java. Sopra questa è la barra di controllo, che ti consente di avviare azioni (come una ricostruzione) e contiene le tue raccolte di JavaBeans da utilizzare nelle tue applicazioni. Inoltre, ogni finestra del browser può visualizzare un progetto in corso al suo interno, quindi se stai lavorando su più progetti, come un nuovo JavaBean e un'applicazione che lo utilizza, puoi avere entrambi i progetti aperti contemporaneamente e spostarti facilmente tra di loro . Questa capacità mi ha impressionato in quanto supporta lo sviluppo Java del modulo più comune, cambiando diversi pezzi contemporaneamente. In una finestra del browser può esserci un progetto di classi di utilità, in un altro browser l'applet che utilizza quelle classi e in un terzo un insieme di pagine HTML che utilizzano l'applet.

La finestra del browser è divisa verticalmente, con la visualizzazione ad albero dei file a sinistra e il visualizzatore a destra. La divisione verticale è chiamata "sipario". L'interfaccia utente di Borland ti consente di rimuovere la tendina quando desideri una visualizzazione a schermo intero del codice sorgente su cui stai lavorando. Sotto ciascuna metà della finestra del browser sono presenti schede di controllo che modificano la semantica della vista stessa.

Quando si visualizza il codice sorgente Java, le schede nella metà del visualizzatore del browser sono etichettate come sorgente, design e doc.

  • La scheda sorgente mostra semplicemente il codice sorgente e puoi modificarlo utilizzando l'editor di evidenziazione della sintassi incluso.

  • La scheda Progettazione mostra uno spazio di lavoro visivo in cui sono presenti tutte le informazioni sull'interfaccia utente definite. Quindi, ad esempio, se il codice sorgente aveva definizioni del pannello, pulsanti e così via, questo pannello è l'area di trascinamento in cui è possibile comporre tali informazioni.

  • La scheda documento mostra il documento HTML generato dai commenti nidificati nel codice sorgente. Il documento HTML può essere estratto utilizzando JavaDoc, tuttavia, non è possibile trovare un modo automatizzato per generare questo documento.

Forse uno degli aspetti più intelligenti dell'implementazione del browser è che quando si sfoglia un file di classe, il browser legge il file di classe e lo decompila quanto basta per mostrare la struttura del codice sorgente. Questo può essere molto utile se sei abituato a leggere la sorgente, piuttosto che guardare un diagramma a oggetti. Inoltre, quando si seleziona una delle classi standard Java o le classi personalizzate Borland, facendo clic sulla scheda documento verrà restituita la pagina JavaDoc per quella classe. Questo ti permette di fare cose come: evidenziare una classe di sistema, selezionare "sfoglia il simbolo selezionato" e vedere sia il sorgente ricostruito, sia la documentazione per la classe. Preferisco questo metodo, che preserva la formattazione HTML incorporata nei dati JavaDoc, ai sistemi che convertono la documentazione Java in file di "aiuto" Microsoft.

Il debugger di JBuilder

Ovviamente scrivere codice è facile. È difficile farlo funzionare. Forse la caratteristica più importante per qualsiasi IDE è il suo debugger. Fortunatamente, il debugger di Borland JBuilder non delude. Di seguito è mostrata una schermata del debugger.

Durante il debug, la finestra del browser viene riconfigurata per supportare la visualizzazione dello stato della classe. La visualizzazione dei file strutturati ad albero è suddivisa in una finestra superiore contenente lo stato del thread e una finestra inferiore contenente informazioni sulle variabili attive. Inoltre, la metà sinistra del browser ottiene alcuni controlli scheda aggiuntivi nella parte inferiore che controllano il funzionamento del debugger.

Inoltre, le finestre popup visualizzeranno il valore di una variabile nella finestra di origine in modo molto simile al funzionamento del debugger di Symantec. Sono presenti tutte le funzionalità di debug standard: passaggio singolo, punti di controllo, punti di interruzione, punti di interruzione condizionali e così via. Da segnalare è il supporto thread, che è eccezionale. Nella finestra del thread nell'angolo in alto a sinistra, puoi fare clic sulla riga attualmente in esecuzione di qualsiasi parte di codice in qualsiasi thread e la finestra di origine apparirà in quella posizione nel codice. Inoltre, la finestra in basso a sinistra visualizzerà qualsiasi stato locale e globale visibile a quel thread. Il debugger di JBuilder rappresenta sicuramente il nuovo standard rispetto al quale verranno misurati altri debugger Java.

Lungo il lato sinistro della finestra di origine, piccoli punti indicano le linee in cui è possibile installare i punti di interruzione. Facendo clic sul punto si evidenzia la linea e viene visualizzato il simbolo del punto di interruzione. Un'altra caratteristica utile è "correre al cursore" - per quelle volte in cui non si desidera eseguire un singolo passaggio attraverso ogni iterazione di un forciclo. Basta fare clic sulla riga, selezionare "Corri al cursore" e l'esecuzione si interrompe proprio lì.

Gestione dell'output

Un'ultima area in cui ho trovato JBuilder particolarmente utile è stata la sua gestione dell'output dall'esecuzione di un'applicazione Java. Il registro di esecuzione è una finestra che contiene tutti i dati inviati System.outdall'esecuzione corrente. Tuttavia, quando sono aperti più progetti, il registro di esecuzione mantiene schede separate per ogni progetto! Un esempio di ciò è mostrato di seguito.

Come puoi vedere nell'immagine ci sono due schede, una per "esempio" e una per "BASIC", il progetto corrente. Questa separazione è essenziale quando si costruiscono più librerie di classi contemporaneamente perché impedisce di confondere l'output dei due progetti.

Quello che mi piace di JBuilder

A volte sono le piccole cose. Mi piace molto che si possa stampare il codice sorgente Java su una stampante a colori e farlo uscire con i suoi caratteri e l'evidenziazione della sintassi intatti. Se potessi personalizzare le intestazioni e i piè di pagina e specificare un output "doppio" (due pagine di codice sorgente stampate fianco a fianco su una pagina di output orizzontale), sarebbe perfetto.

Il supporto per Java 1.1 è molto carino. Sebbene JDK 1.1 sia uscito da un po 'e Symantec abbia avuto il supporto beta per 1.1, non c'è niente come avere un IDE progettato da zero per funzionare con 1.1.

Come ho affermato in precedenza, anche il debugger è molto carino: fornisce una grande quantità di informazioni in un modo facile da comprendere. Gran parte del debugging è in stile "point-and-shoot", che ad alcuni utenti piace (lo faccio) e ad altri no (credendo che "gdb" stia per God's DeBugger). Credo che sia sufficiente trovare anche i bug di deadlock dei thread più difficili.

Cosa non mi piace di JBuilder

L'IDE configurabile di JBuilder in realtà non è configurabile in due modi cruciali:

  • Innanzitutto, non è possibile impostare i colori di sfondo e di primo piano predefiniti nel display. Invece, devi prima impostarli per l'intero desktop e quindi JBuilder noterà le modifiche. È tuttavia possibile impostarli utilizzando alcuni dei loro schemi di colori "predefiniti".

  • Il secondo grave difetto è che non puoi personalizzare le sequenze di tasti dell'editor. I miei due editor preferiti a questo proposito sono EMACS e Programmer's File Editor (PFE). La scheda di personalizzazione dell'editor di JBuilder consiste nell'essere in grado di selezionare alcune mappature di tasti preconfezionate - predefinite, Brief, Classic ed Epsilon sono incluse - e nell'essere in grado di selezionare come funzionano cose come l'indentazione automatica, l'evidenziazione e il wrap-around. Sto ancora cercando l'editor che ti consenta di definire pacchetti di macro in Java.

Nell'area della presentazione, JBuilder soffre di alcuni semplici bug che mi aspetto verranno corretti nella prima versione della patch o giù di lì. Ad esempio, se sul desktop è selezionato "Caratteri grandi" (che Microsoft insiste significa prendere Arial 10 e "moltiplicarlo" per qualche fattore), il calcolo dello spazio necessario alla barra degli strumenti si interrompe e le icone delle librerie dei componenti vengono tagliate spento. Se, d'altra parte, imposti gli aspetti dei caratteri in modo esplicito nella sezione "Aspetto" delle proprietà del desktop, ad esempio Arial a 14 punti, il rendering della barra dei componenti viene eseguito correttamente. Chiaramente, è un bogosity di Microsoft (dove un font da 10pt non viene sempre visualizzato come un font da 10pt), ma i ragazzi di Borland devono affrontarlo.

Un'altra area che non mi piace di tutti gli IDE per Java è la dipendenza dalla loro Java virtual machine "personalizzata" per lo sviluppo. Spero che in futuro gli IDE saranno utilizzabili con lo standard Java Runtime Environment (JRE) e alcune librerie personalizzate. Nessuno l'ha ancora fatto bene.

Quello che vorrei che avesse

Ovviamente, nessun prodotto è perfetto per tutti, quindi quello che mi piacerebbe vedere potrebbe essere considerato rumore per altre persone. Ma, nello spirito di parlare, queste sono le tre cose principali che vorrei vedere in JBuilder (o qualsiasi IDE solido per quella materia):

  • Controllo della configurazione IDE più preciso: mappature dei tasti, colori del display e layout

  • Supporto della profilazione nel debugger: traccia delle chiamate / temporizzazione, utilizzo dell'heap, garbage map e così via

  • Controllo del codice sorgente: questa è un'area in cui Java è debole (controllo della versione) e un sistema di controllo intelligente che ha notato quando il contratto è cambiato (modifiche di classe incompatibili) e cosa è cambiato quando, sarebbe un vero piacere

Avvolgendo

Lo strumento JBuilder è un ingresso molto capace nel mercato IDE sempre più affollato. Offre funzionalità straordinarie in alcuni luoghi, come JavaBeans, debug, più progetti e design dell'interfaccia utente. Questa versione di JBuilder ha alcuni bordi approssimativi riguardo alla presentazione e alla configurabilità dell'IDE, tuttavia, questo è prevedibile in una versione 1.0. Anche il supporto di Java 1.1 è superiore. La mia opinione è che, per la prima volta, i ragazzi e le ragazze di Symantec abbiano una seria concorrenza con il loro prodotto Visual Cafe Pro.

Chuck McManis attualmente è il direttore del software di sistema presso FreeGate Corp., una start-up finanziata da venture capital che sta esplorando opportunità nel mercato Internet. Prima di entrare a far parte di FreeGate, Chuck era un membro del gruppo Java. È entrato a far parte del gruppo Java subito dopo la formazione di FirstPerson Inc. ed era un membro del gruppo SO portatile (il gruppo responsabile della parte OS di Java). Successivamente, quando FirstPerson è stato sciolto, è rimasto con il gruppo attraverso lo sviluppo delle versioni alpha e beta della piattaforma Java. Ha creato la prima home page "tutto Java" su Internet quando ha programmato per la versione Java della home page di Sun nel maggio 1995. Ha anche sviluppato una libreria crittografica per Java e versioni del programma di caricamento classi Java in grado di schermare le classi basato su firme digitali. Prima di entrare in FirstPerson,Chuck ha lavorato nell'area dei sistemi operativi di SunSoft, sviluppando applicazioni di rete, dove ha realizzato la progettazione iniziale di NIS +. Controlla la sua home page.