Oggi avevo un pò di tempo libero a disposizione e mi sono dedicato alla versione made in novell di .net, invece di testare i classici esempi in C#, ho deciso di verificare lo stato del compilatore VB.NET e delle Windows.Forms (infatti mono sarà veramente utile quando farà funzionare senza problemi applicazioni complete non esempi costruiti ad hoc).
Al momento ho testato il tutto sul mio MacBook (Leopard 10.5.1, mono 1.2.6) utilizzando come editor smultron, (prometto di testare il tutto su debian in settimana).
Vari helliniword testuali hanno funzionato senza problemi quindi ho provato qualcosa di grafico:
--- Test_VB_Form.vb --
' Spazio dei nomi utilizzati
imports System.Windows.Forms
imports System.Drawing
' Spazio dei nomi MyHeloApp come contenitore per la nostra applicazione
Namespace MyHelloApp
Public Class MainWindow
Inherits Form
' dichiariamo due variabili di istanza, due controlli una textbox e un bottone
' dichiariamo bottone con la parola chiave withEvents che permette di gestirne
' gli eventi.
Public name As TextBox = New TextBox()
Public btnBottone As Button = new Button()
Public Sub New
' Proprietà generali, altezza, larghezza, caption e disposizione sullo schermo
Me.Text = "HelloMyName VB mono"
Me.Width = 300
Me.Height = 300
CenterToScreen()
' Inseriamo una textBox
name.Text=""
name.Size = New Size(150,20)
name.Location = New Point(10,10)
Me.Controls.Add(name)
' Inseriamo il bottone
btnBottone.Text = "cliccami..."
btnBottone.Size = New Size(90,30)
btnBottone.Location = New Point(10,40)
Me.Controls.Add(btnBottone)
' Colleghiamo gli oggetti ai loro gestori di evento
AddHandler Application.ApplicationExit, AddressOf MainWindow_OnExit
AddHandler btnBottone.Click, AddressOf btnBottone_Clicked
End Sub
' Gestiamo il click sul bottone
Public Sub btnBottone_Clicked(ByVal sender As Object, ByVal args As EventArgs) 'Handles btnBottone.Click
Dim stringa As String = String.Format("Hello, {0}", name.Text)
MessageBox.Show(stringa)
End Sub
Public Sub MainWindow_OnExit(ByVal sender As Object, ByVal args As EventArgs)
MessageBox.Show("Uscita...")
End Sub
End Class
Public Module Program
Sub Main()
Application.Run(New MainWindow())
End Sub
End Module
End Namespace
-- End File --
Compilare con: vbnc Test_VB_Form.vb
il risultato è stato abbastanza buono:
inoltre nelle future versioni Windows.Forms su OSX sarà implementato in maniera nativa mentre per il momento gira sotto X11, ma questo è il minore dei mali al momento.
Ho quindi optato per provare qualcosa più complesso una semplice forms che utilizza controlli più avanzati come lo slider, il calendario i tabs e i nuovi layout di .NET 2.0:
La form fa parte dello stage alpha di un minigestionale che avevo scritto per g&g snc quache annetto fa.
La forms funziona ma... Ma se si fa un qualsiasi resize della finestra X11 spara fuori un sacco di errori e il programma viene freezato, in settimana cercherò di verificare se su linux da gli stessi problemi (infatti non è la prima volta che sotto leopard x11 mi tira strani scherzi).
Conclusione? Il progetto mono sta venendo su bene, e se a livello etico i puristi si sdegnano di avere .net sul proprio sistema operativo c'è da dire che avere la possibilità di sfruttare il software .net sula propria macchina è una comodità incredibile :), inoltre per chi sviluppa con prodotti microsoft si aprono nuove prospettive multipiattaforma.
In realtà mono è ancora lontano da .net già un software come paint.net non gira :(
Inoltre microsoft sviluppa .net a ritmo frenetico e si corre il rischio di avere un mono 2.0 funzionale con tutti gli assembly di net 2.0 e 3.5 e magari microsoft è già al lavoro su .net 5.0... Comunque il progetto senza dubbio merita di essere seguito.
Alternative? per i programmatori C++ wxwidgets, QT. (e le gtk? nulla! finchè non si ha una versione nativa osx)... per i programmatori visual basic: RealBasic e KBasic (tutta roba commerciale ma stiamo guardando al multipiattaforma quindi per ora niente gambas), per i programmatori C#... bè sicuramente java... :) :)
Al momento ho testato il tutto sul mio MacBook (Leopard 10.5.1, mono 1.2.6) utilizzando come editor smultron, (prometto di testare il tutto su debian in settimana).
Vari helliniword testuali hanno funzionato senza problemi quindi ho provato qualcosa di grafico:
--- Test_VB_Form.vb --
' Spazio dei nomi utilizzati
imports System.Windows.Forms
imports System.Drawing
' Spazio dei nomi MyHeloApp come contenitore per la nostra applicazione
Namespace MyHelloApp
Public Class MainWindow
Inherits Form
' dichiariamo due variabili di istanza, due controlli una textbox e un bottone
' dichiariamo bottone con la parola chiave withEvents che permette di gestirne
' gli eventi.
Public name As TextBox = New TextBox()
Public btnBottone As Button = new Button()
Public Sub New
' Proprietà generali, altezza, larghezza, caption e disposizione sullo schermo
Me.Text = "HelloMyName VB mono"
Me.Width = 300
Me.Height = 300
CenterToScreen()
' Inseriamo una textBox
name.Text=""
name.Size = New Size(150,20)
name.Location = New Point(10,10)
Me.Controls.Add(name)
' Inseriamo il bottone
btnBottone.Text = "cliccami..."
btnBottone.Size = New Size(90,30)
btnBottone.Location = New Point(10,40)
Me.Controls.Add(btnBottone)
' Colleghiamo gli oggetti ai loro gestori di evento
AddHandler Application.ApplicationExit, AddressOf MainWindow_OnExit
AddHandler btnBottone.Click, AddressOf btnBottone_Clicked
End Sub
' Gestiamo il click sul bottone
Public Sub btnBottone_Clicked(ByVal sender As Object, ByVal args As EventArgs) 'Handles btnBottone.Click
Dim stringa As String = String.Format("Hello, {0}", name.Text)
MessageBox.Show(stringa)
End Sub
Public Sub MainWindow_OnExit(ByVal sender As Object, ByVal args As EventArgs)
MessageBox.Show("Uscita...")
End Sub
End Class
Public Module Program
Sub Main()
Application.Run(New MainWindow())
End Sub
End Module
End Namespace
-- End File --
Compilare con: vbnc Test_VB_Form.vb
il risultato è stato abbastanza buono:
inoltre nelle future versioni Windows.Forms su OSX sarà implementato in maniera nativa mentre per il momento gira sotto X11, ma questo è il minore dei mali al momento.
Ho quindi optato per provare qualcosa più complesso una semplice forms che utilizza controlli più avanzati come lo slider, il calendario i tabs e i nuovi layout di .NET 2.0:
La form fa parte dello stage alpha di un minigestionale che avevo scritto per g&g snc quache annetto fa.
La forms funziona ma... Ma se si fa un qualsiasi resize della finestra X11 spara fuori un sacco di errori e il programma viene freezato, in settimana cercherò di verificare se su linux da gli stessi problemi (infatti non è la prima volta che sotto leopard x11 mi tira strani scherzi).
Conclusione? Il progetto mono sta venendo su bene, e se a livello etico i puristi si sdegnano di avere .net sul proprio sistema operativo c'è da dire che avere la possibilità di sfruttare il software .net sula propria macchina è una comodità incredibile :), inoltre per chi sviluppa con prodotti microsoft si aprono nuove prospettive multipiattaforma.
In realtà mono è ancora lontano da .net già un software come paint.net non gira :(
Inoltre microsoft sviluppa .net a ritmo frenetico e si corre il rischio di avere un mono 2.0 funzionale con tutti gli assembly di net 2.0 e 3.5 e magari microsoft è già al lavoro su .net 5.0... Comunque il progetto senza dubbio merita di essere seguito.
Alternative? per i programmatori C++ wxwidgets, QT. (e le gtk? nulla! finchè non si ha una versione nativa osx)... per i programmatori visual basic: RealBasic e KBasic (tutta roba commerciale ma stiamo guardando al multipiattaforma quindi per ora niente gambas), per i programmatori C#... bè sicuramente java... :) :)
Commenti
Pertanto, mono è più che maturo (infatti già supporta la versione .net 3.5 quasi al completo).
Saluti
Ritieni che vista, dopo aver letto questo http://blogs.ugidotnet.org/raffaele/archive/2008/11/27/94770.aspx , sia solo fumo negli occhi?