A Visual Basic .NET (röviden VB.NET) a Microsoft programozási nyelve, mely a .NET keretrendszeren alapul. 2002-ben jelent meg, és nem egyszerűen a korábbi Visual Basic 6 továbbfejlesztése, hanem részben új nyelv. A nyelvet a 8-as verziótól egyszerűen Visual Basicnek nevezi a Microsoft.

Visual Basic .NET

Paradigmatöbb paradigma: strukturált, imperatív, deklaratív, objektumorientált
Jellemző kiterjesztésvb
Megjelent2001
TervezőMicrosoft
FejlesztőMicrosoft
Utolsó kiadás17.9.2 (stabil verzió, 2024. február 27.)[1]
Hatással volt ráVisual Basic
Operációs rendszerBármely CLI-megvalósítással rendelkező rendszer (például a Microsoft CLR-je vagy a Xamarin Monója)
LicencApache Licenc 2.0
Weboldal

A Visual Basic .NET a Microsoft által fejlesztett, a .NET keretrendszerben lévő virtuális számítógép, a Common Language Runtime (CLR) számára hoz létre köztes kódot.

Ezt a számítógép először futásidőben gépi kóddá fordítja, így a virtuális számítógép működőképes marad más .NET-nyelvekkel, a megvalósításhoz mégis a .NET keretrendszer szükséges.

A Visual Basic .NET támogatja az objektumorientált programozást, és kivételkezeléssel is rendelkezik, hasonlóan más programozási nyelvekhez, például a Javához és a C++-hoz.

Története

szerkesztés

2000 körül a Visual Basic más programozási nyelvekkel szemben képes volt grafikus felületet is létrehozni. Sok más programozási nyelv viszont képes volt felhasználói felületek megjelenítésére, például a C++ a Microsoft Foundation Classes (MFC) révén. Ezenkívül a Visual Basic komplex, inhomogén termékké vált, melynek kezelése és javítása egyre nehezebb lett. Ezért a termék továbbfejlesztése megállt a siker és sok VB-programozó akarata ellenére, és a Visual Basic nyelvet a .NET keretrendszerbe integrálta. Így a nyelv jelentősen megváltozott, hogy .NET-nyelv lehessen. Így megjelent az objektumorientáltság és a Common Intermediate Language-be való fordítás.

2002–2005: Visual Basic .NET

szerkesztés

2002-ben jelent meg a Visual Studio .NET-tel az első .NET keretrendszeren alapuló Visual Studio-változat, mely így a Visual Basic .NET-et támogatta. Az ekkor még új .NET technológia és a „Visual Studio .NET” elnevezés terjedése azt a benyomást keltette sokakban, hogy ez egy csak e platformra készült változat, így sok fejlesztő és vállalkozás továbbra is a klasszikus Visual Basicet támogató Visual Studiót használta.

A Visual Basic 7.1, illetve a .NET 1.1 keretrendszer és a Visual Studio .NET 2003 első frissítése csak kis változásokat hozott, ami a kis verzióváltozásokban is megjelenik. A Visual Basic 7.1-től számláló deklarálható a For ciklus elején. Ezenkívül a mobil készülékek támogatása is megjelent. Ez esetben nem a .NET 1.1 keretrendszer, hanem a .NET Compact Framework 1.0 a programkörnyezet.

2005–2007: Visual Basic 8 és 9

szerkesztés

2005 novemberében jelent meg a .NET 2.0 és a .NET Compact Framework 2.0, ekkor jelent meg a Visual Basic 8 a Visual Studio 2005 részeként (a .NET már nem része a névnek). Ekkor jelentős átstrukturálások történtek a .NET-könyvtárban, például a generikus programozás támogatása, mely a C++-sablonokra hasonlít. Számos felület és attribútum generikus megvalósításban is elérhetővé vált, és ettől kezdve ingyenes, korlátozott Express Edition vált elérhetővé.[2]

A Visual Basic 8-ban jött létre az IsNot, melyet a Microsoft szabadalmaztatott.[3] További újdonság a My névtér, mely különböző rendszerfüggetlen függvényeket képes bemutatni, tulajdonképp a számítógép részeihez, az operációs rendszer és az aktuális felhasználó adataihoz vagy a rendszerleíró adatbázishoz fér.

2007-ben a Windows Vista kiadásával együtt jelent meg a Visual Basic 9[4] és a Visual Studio 2008. A Visual Basic 9 az új LINQ .NET-komponenst is támogatta, és a .NET 3.0 keretrendszeren (korábban WinFX) alapul. Ezenkívül megjelent a Windows Presentation Foundation, mely nemcsak a Windows Formst, hanem a GDI-t is támogatja.[5]

2007 novemberétől minden Visual Studio 2008-változat a .NET 3.5 keretrendszeren alapul, melyben a LINQ bővült, ezenkívül a C#, Visual Basic és a C++ új fordítót kaptak, ezenkívül bevezették az ASP.NET AJAX-szal, az ADO.NET Entity Framework, az SQL Server 2008-hoz való adatkérések, a .NET Framework Client Profile támogatását stb.[6]

2010–2019: Visual Basic 10–16

szerkesztés

A Visual Basic 10 a Visual Studio 2010-zel együtt jelent meg, és kisebb változások jelentek meg vele. Ide tartoznak többek közt az automatikus tulajdonságok, a csoportos inicializáció, az implicit cellafolytatás, a dinamikusan generikus ko-/kontravarianciák és a globális névtérhozzáférés. 2012-ben jelentek meg a Visual Basic 11 és a Visual Studio 2012. Ekkor jelentek meg az async és await kulcsszavak, az iterátorok és a caller info-attribútumok.

A Visual Studio 2013-mal együtt jelent meg a Visual Basic 12. Ekkor jelent meg a .NET fordítóplatform, a Roslyn.

A Visual Basic 13 és 14 2015-ben jelentek meg a Visual Studio 2015-tel együtt.[7] A 14-es változatban jelentek meg a „?.”, a NameOf operátorok, a sztringinterpoláció és a többsoros sztringek.[8]

2017-ben a Visual Studio 2017-tel együtt jelent meg a Visual Basic 15. Új funkciók többek közt a rendezett n-esek támogatása és a C# visszatérési értékeinek támogatásának bővítése.

A Visual Studio 2019-cel együtt jelent meg 2019-ben a Visual Basic 16. Itt a .NET Core Visual Basic Runtime-funkcióiban történtek változások. Ezenkívül a Visual Basic 16 az első .NET Core-alapú változat.[9]

Tulajdonságok

szerkesztés

Windows-alkalmazások

szerkesztés

Windows-alkalmazások fejlesztéséhez a Windows Forms használatos. Ez esetben eseményorientált programmodellről van szó, melynél a megfelelő procedúrák meghívása bizonyos felhasználói művelet, például egy kapcsoló állapotának módosításának jelentésekor történik.

A Visual Basic 6-tal szemben a Windows-formák nem speciális formátumban vannak elmentve, hanem normális osztályokként hozza létre és használja a program, amik megfelelő alaposztályból (gyakran System.Windows.Forms.Formból) származnak.

Egy ilyen osztály létrehozásánál a konstruktor adja az objektumokat, melyek az ablakban megjelennek. E modellt használja a Java is.

A modern fejlesztői környezetekben lehetséges a formulák vizuális megjelenítését is, ahol a konstruktorhoz szükséges kódot a környezet adja.

Webalkalmazások

szerkesztés

Webalkalmazások fejlesztéséhez ASP.NET használatos. Ekkor a weblap megjelenése és a VB.NET-osztályban lévő kód el van választva. Ez elkerüli az ASP-ben megjelenő spagettikódot, mely a nagyobb projektek kezelését megnehezíti.

Az ASP.NET-alkalmazásokhoz a Microsoft IIS vagy mod_mono modullal rendelkező Apache HTTP Server szükséges.

Az ASP.NET-ben lehetséges webszolgáltatások fejlesztése is. Az ezek közzétételekor szükséges információkat bevitt attribútumokként hozza létre a fejlesztői környezet.

Egy webszolgáltatás hozzáféréséhez generálhat a fejlesztői környezet egy osztályt, mely a webszolgáltatás metódusaiba ágyazza a hozzáférést.

Eltérések az eredeti Visual Basictől

szerkesztés

A szintaxis kivételével a Visual Basic .NET jelentősen eltér a korábbi Visual Basic-változatoktól. Teljes értékű .NET-nyelvként a VB.NET teljesen objektumorientált, és a forráskód fordítása Common Intermediate Language-be történik, nem natív Win32-kódba. Ezt futásidőben gépi kódba fordítja a rendszer, így a platform kezelni tudja. A .NET-re való áttérés további változásokat is hozott. A .NET keretrendszer sok könyvtárat tett elérhetővé például fájlhozzáféréshez vagy XML-fájlok írásához, olvasásához. A Windows Forms felváltotta a korábbi verziók Thunder Forms rendszerét. A legfontosabb különbség a kettő közt, hogy a mentéshez nem használatos többé speciális fájlformátum, hanem a formulákat a kód hozza létre osztályként. Így az ablak konstruktora használatos a szintén osztályok által képviselt irányító elemekhez. A modern IDE-k lehetővé teszik a formulák vizuális létrehozását, ahol az ablakosztály-konstruktorhoz szükséges kódot a fejlesztői környezet adja. Továbbá a Visual Basic .NET a Visual Basic 6-tal szemben webalkalmazások létrehozását is lehetővé teszi. A .NET keretrendszerrel a Web Forms, az ASP.NET GUI-könyvtára elérhető lett.

Ezenkívül azonban vannak hátrányok is. Mivel a VB.NET nem a Visual Basic 6 könyvtárát, hanem a .NET keretrendszert használja, egy Visual Basic-kód csak hosszú munkával alakítható át az új verziókra. A Microsoft a Visual Studio 2008-as változatáig átalakító asszisztenst is adott. Ez a kódszerkezetet nagyrészt helyesen alakítja, és kevés speciális eset kivételével a Thunder Formsról a Windows Formsra való áttérést is kezeli, azonban például a grafikus programozás nehezebb számára, mivel a korábbi Visual Basic (Thunder Forms-elemekbe ágyazott GDI) és a Visual Basic .NET grafikai rendszerei (GDI+) gyakorlatilag egymással inkompatibilisek. A jobb átalakításhoz ezenkívül van egy függvénygyűjtemény a .NET keretrendszerben (a Microsoft.VisualBasic névtérben), mely egyes fontos korábbi Visual Basic-függvényeket elérhetővé tesz a .NET-ben. A COM-komponensek korlátlanul tovább használhatók. Az inkompatibilitás mellett a „szerkesztés és folytatás” funkció megszűnte is hátrány volt, így hibakereső módban többé nem változtatható a kód és nem folytatható a kiértékelés. E funkció a Visual Basic 2005-ben visszatért.

A Visual Basic .NET-ben fejlesztői környezet nélkül is készíthetők programok. A System.Reflection.Emit névtérben egy alkalmazás fordítására való függvények vannak, ezenkívül van egy parancssori fordító is, a vbc.exe.

„Helló világ” példa

szerkesztés

Az alábbi forrásszöveg egyszerű Visual Basic-program, mely a „Helló, világ!” üzenetet írj ki a szabványos kimeneti adatfolyamba, mely jellemzően konzol.

Public Class Program
   Public Shared Sub Main()
     Console.WriteLine("Helló, világ!")
   End Sub
End Class

Magyarázatok:

A programok egyszerű konzolos alkalmazások egy osztállyal. Ez esetben csak a statikus Main() metódus – a VB-nómenklatúrában shared sub használatos, mely általában először kerül meghívásra.

A Console.WriteLine kimeneti függvény a .NET osztálykönyvtárból származik, és lehetővé teszi a szabványos kimeneti értékek kimenetét, ahol a kimenetet új sor követi.

Egyszerű üzenőablak

szerkesztés
Imports System.Windows.Forms

Private Class Program
  Public Shared Sub Main()
    MessageBox.Show("Szöveg", "Cím", MessageBoxButtons.OK, MessageBoxIcon.Hand)
  End Sub
End Class

Bájtsorozatpélda

szerkesztés
Imports System.IO
Imports System.Text

Private Class Program
  Public Shared Sub Main()
    ' Fájlba írandó szöveg
    Const textToWrite As String = "Hallo Welt"
    Const fileName As String = "dateiname.txt"

    ' „dateiname.txt” létrehozása vagy felülírása
    Using stream As New FileStream(fileName, FileMode.Create, FileAccess.Write)
      ' A szöveg UTF-8 kódolással kerül a fájlba
      Dim data As Byte() = Encoding.UTF8.GetBytes(textToWrite)
      stream.Write(data, 0, data.Length)
    End Using 'Fájl bezárása.
  End Sub
End Class

Hálózati példa

szerkesztés

Sztringinterpolációs Visual Basic 14-en alapul (Visual Studio 2015):

Imports System.Console
Imports System.Text
Imports System.Net
Imports System.Net.Sockets

''' <summary>
''' Példaprogram: kapcsolat csatornával
''' </summary>
''' <remarks>További információk: <see cref="System.Net.Sockets.Socket"/>.</remarks>
Class Program
  ''' <summary>
  ''' Belépési pont
  ''' </summary>
  Public Shared Sub Main()
    ' Küldött adatok
    Const textToSend As String = "Hallo Welt"
    ' Végpont, melyhez csatlakozik
    Const localhost As String = "127.0.0.1"
    Const port As Integer = 80

    Dim data As Byte() = Encoding.UTF8.GetBytes(textToSend)
    Dim ip As IPAddress = IPAddress.Parse(localhost)
    Dim ipEndPoint As New IPEndPoint(ip, port)

    ' Használt csatorna
    Using socket As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
      socket.Connect(ipEndPoint)
      ' Csatlakozás a végponthoz
      Dim byteCount As Integer = socket.Send(data, SocketFlags.None)
      ' Adatok küldése
      WriteLine($"{bytecount} bájt lett elküldve")
      Dim buffer As Byte() = New Byte(255) {}
      ' Fogadott adatok puffere
      byteCount = socket.Receive(buffer, SocketFlags.None)
      ' Adatok fogadása
      ' Válasz esetén ezt adja ki
      If byteCount > 0 Then
        WriteLine($"{byteCount} bájt lett fogadva")
        Dim answer As String = Encoding.UTF8.GetString(buffer)
        WriteLine($"Fogadott adatok: {answer}")
      End If
    End Using  ' Kapcsolatzárás.
  End Sub
End Class

Fejlesztői környezetek

szerkesztés

A leggyakrabban használt IDE a Visual Studio, mely a Visual Basicet teljes mértékben támogatja. A SharpDevelop (rövidítése: #develop) a 4-es verzióig és a MonoDevelop, a Mono-projekt fejlesztői környezet is használható.

A .NET-ben lévő vbc.exe parancssori eszközzel Visual Basic-fájlok, az msbuild.exe-vel Visual Basic-projektek fordíthatók.

Jogi szempontok

szerkesztés

A Visual Basic eredeti változata számos modern nyelvvel szemben nem nyílt szabvány, hanem kereskedelmi, és a Microsoft szellemi tulajdona. A Visual Basic .NET-tel e kapcsolat lazult, mivel a .NET infrastruktúra egy részét az Ecma International szabványosította. A Visual Basic 8-ban bevezetett IsNot operátor szabadalmaztatása azonban ismét egy lépés volt a zárt környezet felé.

A Microsoftnak azonban nem sikerült a szabadalmaztatás.[3] Ezenkívül a Microsoft a Roslynnal és a 2014-ben létrehozott .NET Alapítvánnyal nyílt forrású stratégiát kezdett. A VB.NET Roslyn–fordító-környezete (beleértve a fordítót, a szintaxisfa-elemzőt, az IL-kibocsátót stb.) VB.NET-ben keletkezett, és nyílt forrású (Apache 2.0 licenccel).

  1. Visual Studio 2022 version 17.9.2 Release Notes, 2024. február 27. (Hozzáférés: 2024. február 27.)
  2. Produktseite Visual Basic Express Edition
  3. a b IsNot OperatorPDF-hivatkozás
  4. Überblick über die Änderungen in Visual Basic 9 (angolul)
  5. Jövőbeli Visual Studio-változatok (angolul)
  6. Architektur von .NET Framework 3.5 (németül)
  7. TechNet Wiki. (Hozzáférés: 2022. május 18.)
  8. New Language Features in Visual Basic 14 (amerikai angol nyelven), 2014. december 9. (Hozzáférés: 2022. május 18.)
  9. KathleenDollard: What's new - Visual Basic (amerikai angol nyelven). (Hozzáférés: 2022. május 18.)

Fordítás

szerkesztés

Ez a szócikk részben vagy egészben a Visual Basic .NET című német Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.