Visual Basic .NET

A Wikipédiából, a szabad enciklopédiából
Visual Basic .NET

Paradigma több paradigma: strukturált, imperatív, deklaratív, objektumorientált
Jellemző kiterjesztés vb
Megjelent 2001
Tervező Microsoft
Fejlesztő Microsoft
Utolsó kiadás17.8.3 (stabil verzió, 2023. december 5.)[1]
Hatással volt rá Visual Basic
Operációs rendszer Bármely CLI-megvalósítással rendelkező rendszer (például a Microsoft CLR-je vagy a Xamarin Monója)
Licenc Apache Licenc 2.0
Weboldal


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.

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.

Példák[szerkesztés]

„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).

Jegyzetek[szerkesztés]

  1. Visual Studio 2022 version 17.6 Release Notes, 2023. június 20. (Hozzáférés: 2023. július 3.)
  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.

Források[szerkesztés]