VB B4J: Visual Basic Cross Platform Windows-OSX-Linux

Stato
Discussione chiusa ad ulteriori risposte.

marcello1993

Utente Electrum
22 Settembre 2009
181
41
25
161
Ciao a tutti ragazzi,

Scrivo questo post per condividere una mia esperienza di programmazione.

** Aggiunto successivamente
Spero sia la sezione giusta, spero di non aver fatto troppi errori di semantica e spero vi piaccia l'argomento e spero di non violare nessuna delle leggi presenti su questo pianeta scrivendo questo post!
Non ho scritto questo post per far pubblicità a qualcosa o qualcuno, il software mostrato non è a pagamento

**

Circa un anno fa, per lavoro, mi sono trovato nella situazione di dover programmare una App per iOS e Android, identica. Arrivo dal mondo del Visual Basic.NET e non avrei avuto abbastanza tempo per studiare il Java e l'ObjectiveC per fare le due App native, il mio capo vuole che si rispettino i tempi e che questi siano brevi!
Oltre al Visual Basic .NET conosco in modo impeccabile il php; ho un'infarinatura generale di C#, C, Python e dello stesso ObjectiveC (ho dovuto in passato sviluppare un'App nativa per iPhone).
Esaminando gli IDE trovati tramite ricerca Google, mi trovo di fronte alla suite di sviluppo B4X, creata da un Israeliano (o Siriano? boh?! xD), Erel Uziel, suddivisa in 3 software (2 a pagamento e uno gratuito). B4X comprende gli IDE per la creazione di App Android (B4A), App iOS (B4I), e software desktop multipiattaforma java (B4J).

Come funziona?
Alcuni Tool di conversione di codice creano delle dipendenze, questi tool traducono il codice scritto da noi in codice nativo quindi, Java per Android, ObjectiveC per iOS e Java per i software desktop

L'unico tool gratuito è quello che ci permette di programmare software desktop, B4J. Il codice che andremo a scrivere per completare il nostro progetto sarà un "derivato" del Visual Basic .NET, "inventato" da Erel. In fase di compilazione otterremmo il file eseguibile .JAR con codice Java, quindi utilizzabile anche su OSX e Linux. L'ho utilizzato per programmare un software server da far girare su una macchina linux.

La cosa veramente "foga" è che la maggior parte del codice è riciclabile ed utilizzabile in B4A e B4I, ad eccezione per quello che riguarda i controlli (textbox, button, datagrid, ecc).

Vi posto come esempio il codice di una semplice calcolatrice che fa la somma di due numeri.

Il codice è molto simile al Visual Basic, come già detto in precedenza
01_scr.JPG

Nella Sub Process_Globals si vanno a dichiarare tutte le variabili comuni al documento corrente, se inserite come Public al posto che Private potranno essere viste anche da altri moduli.

Le variabili MainForm e fx sono inserite di default (non so spiegarvi bene il funzionamento della classe JFX).
Si capisce poi che le variabili successive sono quelle inserite da me, la classe TextField è quella che sostituisce la classe controllo TextBox del Visual Basic e la classe Button è quella... Beh avete capito... Così via per tutte quelle presenti. Vi sono anche diverse classi specifiche ad uno scopo veramente semplici da utilizzare, come Rpi4J, per controllare i GPIO dei raspberry, jNetwork per i socket, ecc...

La community di B4J è molto ATTIVA e moltissimi sviluppatori continuano a creare librerie aggiuntive, semplici e pronte all'uso (come librerie per utilizzare GoogleMaps, Cifratura, Connessioni seriali, Sockets, Librerie grafiche, Ecc...)

Le librerie sono programmate e compilate in linguaggio JAVA quindi se siete dei pionieri di questo linguaggio potreste creare qualche libreria nuova!

Come potete notare nell'immagine seguente, il codice è molto chiaro e la gestione degli eventi è ordinata come quella del VB.NET di Microsoft.
02_scr.JPG

Io so che i controlli di VB.NET hanno tantissimi eventi, questi ne hanno un po' meno ma non cambia di molto la logica della gestione.
Se per Visual Studio una textbox ha gli eventi di gestione focus LostFocus e GotFocus, in B4J l'evento è uno solo.
L'evento FocusChanged rappresenta già di suo uno stato di Lost o Got del focus tramite il parametro boolean HasFocus. Di conseguenza, per sapere se quella TextField ha perso o ha preso il focus basterà inserire un costrutto IF THEN ELSE. Semplice no?

Come potete vedere, l'evento MouseClicked è l'evento scatenato dal click sul Button associato.
Il parametro EventData permette di verificare quale pulsante è stato cliccato, se è stato premuto a lungo, se si sono verificati più click, permette di ottenere le coordinate del puntatore e di consumare l'evento o meno.
Nello specifico:

ClickCount
Consume
IsInitialized

MiddleButtonDown
MiddleButtonPressed
PrimaryButtonDown
PrimaryButtonPressed
SecondaryButtonDown
SecondaryButtonPressed
X
Y

Insomma, direi che potete gestire tutti i click che volete! xD

Inoltre tramite l'istanza fx dichiarata di default è possibile mostrare le MessageBox, o le MessageBox2 (più complete e personalizzabili). Ahimè quel AllauhAkbar di Erel non ha implementato l'override delle funzioni in B4J quindi versioni diverse della stessa funzione avranno nomi diversi, genericamente differenziati da un numero alla fine.

Per disegnare il nostro "Form" andremo ad utilizzare il Designer, un' po meno versatile dell'editor di Visual Studio perché non permette di avere anteprima del form, potremo vederlo solo avviando il debug o la release del nostro software.
04_scr.JPG

Nella Lista ad albero di sinistra vi sono i controlli che ho utilizzato nel form della calcolatrice.
Subito affianco vi è il pannello delle proprietà del controllo, classico e simile a quello di Visual Studio. Sapete già come funziona. In basso, quel rettangolo minuscolo, è la finestra che permette di impostare le dimensioni dei controlli in base alle risoluzioni, o se si vuole, si può anche lavorare con le percentuali!
A destra vi è poi il pannello che mostra il layout del nostro form.
Aggiungere controlli al form è molto semplice, basterà aprire la tendina del menù Add View e scegliere quello che più ci piace (Se non vi vanno bene quelli potete sempre crearli tramite delle classi vostre).

La generazione degli eventi e l'accesso all'oggetto tramite codice va inserito manualmente, nulla di complesso...
05_scr.JPG

In Visual Studio vi basta fare doppio click su un controllo, in B4J vi basta fare Tool > Generate Members e selezionare tutto ciò che vi serve. Aprendo i rami della lista ad alberò visualizzerete quelli che sono gli eventi utilizzabili dei controlli, selezionabili tramite checkbox. Per ottenere l'oggetto Txt1 nel codice è invece necessario selezionare la checkbox affianco allo stesso. una volta selezionato tutto il necessario basterà cliccare su Generate Members in basso. Questa operazione è effettuabile anche tramite click destro dal layout del form.


In questo Screen potete vedere quelle che sono le librerie presenti di Default nel software
03_scr.JPG



Potete ottenere più informazioni su B4J tramite questo link.
Per farlo funzionare occorre scaricare JAVA SDK ma è descritto tutto in modo dettagliato sul sito ufficiale!
B4J è utilizzabile gratuitamente anche per scopi commerciali


Spero che la "guida" se così si può chiamare sia stata di vostro gradimento e chissà magari anche voi inizierete a programmare utilizzando questa suite! io Ho sviluppato diverse App con questi Tool e nel caso vi servisse aiuto potete contattarmi senza problemi, AES, Sockets, Form, Disegni con primitive grafiche, ecc...
 
Conosco Xamarin, Programmi in C#, costa 999€/ANNO ed è fatto per programmare App... Con B4J programmi software desktop per Windows Linux e OSX. Con B4A programmi App native android con una licenza da 49€ (che può essere usata su più computer contemporaneamente) e con B4I programmi App native iOS con una licenza da 49€ (che può essere usata su più computer contemporaneamente)
 
Grazie Marcello1993. Suggerimento ottimo. E' un anno che frequento il forum di B4X ed hor già creato un paio di app. Non finirò mai di ringraziarti.
 
Stato
Discussione chiusa ad ulteriori risposte.