Sviluppo di una estensione per VSCode
Creators: name: Beffa, Bryan
Publisher: name: Scuola Universitaria della Svizzera Italiana (SUPSI)
Year: 2023

description: Negli ultimi tempi, la "programmazione fluent" è diventata sempre più popolare tra gli sviluppatori. Questo approccio consente di scrivere codice in modo più chiaro e semplice grazie all'utilizzo di sequenze di istruzioni concatenate e facilmente leggibili. Nerd4J è un framework che utilizza, in parte, l'approccio della programmazione fluent, offrendo agli sviluppatori la possibilità di costruire applicazioni ad alte prestazioni in Java anche attraverso l'uso di codice fluent. Questo articolo descrive lo sviluppo e la creazione di un'estensione per Visual Studio Code (VSCode) che consenta la generazione automatica di codice Java, in particolare sfruttando le classi messe a disposizione dal framework Nerd4J. L'obiettivo è fornire agli sviluppatori uno strumento che semplifichi la creazione di codice ripetitivo e tedioso, consentendo loro di concentrarsi su aspetti più significativi dello sviluppo. L'estensione è in grado di riconoscere il codice sorgente di una classe Java all'interno dell'ambiente di sviluppo VSCode. Una volta individuata la classe, l'estensione sfrutta la reflection di Java per identificare tutti i campi visibili, inclusi quelli ereditati dalla gerarchia di classi. Gli sviluppatori hanno la possibilità di selezionare un insieme dei campi rilevati e poter generare i metodi METADATI_BEFFA 2/3 toString(), equals(), hashCode() e withField(). L'estensione mira a semplificare il processo di sviluppo di applicazioni Java attraverso l'automazione di compiti ripetitivi e la generazione di codice standardizzato, consentendo agli sviluppatori di concentrarsi su aspetti più creativi e significativi della programmazione, come ad esempio la logica e l’algoritmica. I risultati ottenuti sono stati positivi e sono stati raggiunti gli obiettivi stabiliti per il progetto, facilitando e semplificando la programmazione attraverso la generazione e sostituzione automatica di codice. Vi è la possibilità di utilizzare snippet di codice per velocizzare le operazioni di import delle classi e aggiunta delle dipendenze Nerd4J. È stata inoltre aggiunta una parte di gestione delle jdk per rendere l’estensione più dinamica e compatibile con le diverse versioni di java. Infine, questo documento parla dei possibili sviluppi futuro dell’estensione, in particolare delle aggiunte di snippet di codice, l’implementazione di un Language Server Protocol e la compilazione automatica dei file java. ____ Lately, "fluent programming" has become increasingly popular among developers. This approach allows for writing code in a clearer and simpler manner, thanks to the use of concatenated and easily readable sequences of instructions. Nerd4J is a framework that employs the fluent programming approach, offering developers the opportunity to build high-performance Java applications also through the use of fluent code. This article describes the development and creation of an extension for Visual Studio Code (VSCode) that enables the automatic generation of Java code, specifically leveraging the classes provided by the Nerd4J framework. The goal is to provide developers with a tool that streamlines the creation of repetitive and tedious code, allowing them to focus on more meaningful aspects of development. The extension is capable of recognizing the source code of a Java class within the VSCode development environment. Once the class is identified, the extension utilizes Java reflection to identify all visible fields, including those inherited from the class hierarchy. Developers have the option to select a set of detected fields and generate the toString(), equals(), hashCode(), and withField() methods. The extension aims to simplify the Java application development process by automating repetitive tasks and generating standardized code, enabling developers to concentrate on more creative and significant programming aspects such as logic and algorithms. The achieved results have been positive, and the project's established objectives have been met by facilitating and simplifying programming through automatic code generation and replacement. There is the possibility of using code snippets to expedite operations like importing classes and adding Nerd4J dependencies. Additionally, a part for JDK management has been included to make the extension more dynamic and compatible with different Java versions. Finally, this document discusses of potential future developments of the extension, particularly focusing on the addition of code snippets, the implementation of a Language Server Protocol, and the automatic compilation of Java files.