Visual Basic .NET (Abk. VB.NET) ist eine Programmiersprache von Microsoft, die auf dem .NET Framework aufbaut. Sie wurde 2002 publiziert und ist keine einfache Weiterentwicklung des Vorgängers Visual Basic 6, sondern wurde in weiten Teilen neu konzipiert. Die Sprache wird allerdings von Microsoft seit Version 8 offiziell wieder nur als Visual Basic bezeichnet.
Visual Basic .NET produziert einen Zwischencode für eine von Microsoft entwickelte virtuelle Maschine, die Common Language Runtime (CLR). Diese Maschine ist im .NET Framework enthalten.
Der Zwischencode wird erst zur Laufzeit in Maschinencode übersetzt, durch diese Zwischenstufe der virtuellen Maschine bleibt sie mit anderen .NET-Sprachen interoperabel, zur Ausführung wird jedoch das .NET Framework benötigt.
Visual Basic .NET unterstützt die objektorientierte Programmierung vollständig und verfügt über eine Ausnahmebehandlung, wie sie auch aus anderen Programmiersprachen wie Java oder C++ bekannt ist.
Geschichte Um die Jahrtausendwende hatte Visual Basic seinen ursprünglichen Vorteil gegenüber anderen Programmiersprachen, einfach eine graphische Oberfläche zu erstellen, eingebüßt. Viele andere Hochsprachen boten nun ebenfalls die Möglichkeiten, einfach Windows-Benutzeroberflächen zu erstellen, zum Beispiel C++ mit den Microsoft Foundation Classes (MFC). Darüber hinaus hatte sich Visual Basic inzwischen zu einem komplexen und eher inhomogenen Produkt entwickelt, dessen Wartung und Verbesserung zunehmend schwieriger wurde. Wohl aus diesen Gründen stoppte Microsoft die Weiterentwicklung dieses Produktes (trotz des kommerziellen Erfolgs und des Protestes vieler VB-Programmierer) und integrierte die Programmiersprache Visual Basic in die hauseigene .Net-Framework-Architektur. Dabei wurde die Sprache zu einem hohen Grad verändert, um den Ansprüchen an eine .NET-Sprache zu genügen. Hierdurch wurde die vollständige Objektorientierung sowie die Übersetzung in die Common Intermediate Language ermöglicht.
2002–2005: Visual Basic .NET Mit Visual Studio .NET erschien 2002 erstmals eine Visual Studio Version, die auf dem .Net-Framework aufbaute und somit Visual Basic .NET unterstützte. Durch das Propagieren der zu diesem Zeitpunkt noch recht jungen .NET-Technologie und die Namensbezeichnung „Visual Studio .NET“ wurde bei den Kunden jedoch der Eindruck erweckt, es handle sich um ein Produkt ausschließlich für diese Plattform. Dies hatte zur Folge, dass viele Entwickler und Unternehmen zurückhaltend weiterhin Visual Studio mit dem klassischen Visual Basic verwendeten.
Das erste Update auf Visual Basic 7.1 bzw. .NET-Framework 1.1 (build 4322) sowie „Visual Studio .NET 2003“ brachte nur kleinere Änderungen, was sich im „kleinen“ Versionssprung widerspiegelt. Etwa kann ab Visual Basic 7.1 eine Zählervariable im Kopf einer For-Schleife deklariert werden. Außerdem wurde die Unterstützung für mobile Geräte hinzugefügt. Auf diesen dient nicht das .NET-Framework 1.1 als Laufzeitumgebung, sondern das „.NET Compact Framework 1.0“.
2005–2007: Visual Basic 8 und 9 Im November 2005 erfolgte der erste große Versionssprung des .NET-Frameworks und des .NET-Compact-Frameworks auf Version 2.0, begleitet von der Veröffentlichung des neuen Visual Basic 8 als Teil von „Visual Studio 2005“ (das „.NET“ ist aus dem Namen entfallen). Mit dieser Version wurden einige Restrukturierungen an der .NET-Laufzeitbibliothek vorgenommen. Am auffälligsten ist die Unterstützung der generischen Programmierung, die den aus C++ bekannten Templates ähnelt. Viele Schnittstellen und Attribute der Laufzeitbibliothek sind auch als generische Implementation verfügbar. Weiter ist ab der Version 2005 eine kostenlose, im Leistungsumfang eingeschränkte Express Edition von Visual Basic .NET verfügbar.Produktseite Visual Basic Express Edition
Mit Visual Basic 8 wurde der Operator IsNot eingeführt, der Aufsehen erlangte, da diese Erfindung zum Patent anmeldet wurde. Eine andere Neuerung ist der My-Namensraum, der unterschiedliche systemabhängige Funktionen in einer für den Programmierer übersichtlichen Weise darstellt, etwa den Zugriff auf Computerkomponenten, die Windows-Registrierungsdatenbank oder Informationen über das Betriebssystem und den aktuellen Benutzer.
2007 wurde parallel zur Veröffentlichung von Windows Vista die neue Visual Basic-Version 9Überblick über die Änderungen in Visual Basic 9 (englisch) bzw. das „Visual Studio 2008“ veröffentlicht. Die größte sprachliche Änderung ist wohl die Unterstützung der neuen .NET-Komponente LINQ. Visual Basic 9 basiert auf dem mit Windows Vista ausgelieferten und für Windows XP erhältlichen .NET Framework 3.0 (vormals WinFX). Der wohl bedeutendste Bestandteil des Versionsupdates ist die Windows Presentation Foundation, die nicht nur Windows Forms, sondern auch das Windows-interne Grafiksubsystem GDI ablöst.Zukünftige Visual Studio-Versionen (englisch)
Seit November 2007 basieren alle Visual Studio 2008-Versionen auf dem .NET Framework 3.5, mit dem die folgenden Technologien eingeführt bzw. erweitert wurden: Language Integrated Query (LINQ), neue Compiler für C#, Visual Basic und C++, ASP.NET mit AJAX, ADO.NET Entity Framework, Datenanbieterunterstützung für SQL Server 2008, Unterstützung für .NET Framework Client Profile u. a.Architektur von .NET Framework 3.5 (deutsch)
2010–2019: Visual Basic 10 bis 16 Visual Basic 10 wurde 2010 zusammen mit Visual Studio 2010 veröffentlicht und brachte kleinere Änderungen mit sich. Dazu zählen automatisch implementierte Eigenschaften, Sammlungsinitialisierer, implizite Zeilenfortsetzung, dynamisch generische Co/Contra-Varianzen und ein globaler Namespace-Zugriff.
Im Jahr 2012 wurden Visual Basic 11 und Visual Studio 2012 veröffentlicht. Dabei führte die neue Version die Schlüsselwörter async und await, Iteratoren und "caller info"-Attribute ein.
Der Release von Visual Studio 2013 im Jahr 2013 brachte auch die Version 12 von Visual Basic mit sich. Wichtigste Neuerung war hier die Technologievorschau auf die .NET-Compiler-Plattform ("Roslyn").
Visual Basic 13 und 14 wurden im Jahr 2015 mit Visual Studio 2015 veröffentlicht. Die Version 14 erweiterte die Visual Basic Programmiersprache um den Operator ?., den NameOf Operator, String-Interpolation und Multiline-Strings.
2017 wurde durch den Release von Visual Studio 2017 auch Visual Basic 15 eingeführt. Neue Features in dieser Version sind die Einführung von Tupels und der erweiterte Support für C#-Return-Werte.
Die aktuellste Version von Visual Studio, Visual Studio 2019, wurde 2019 gemeinsam mit Visual Basic 16 veröffentlicht. Fokussiert wurde sich dabei auf mehr Funktionen der Visual Basic Runtime (microsoft.visualbasic.dll) für .NET Core. Außerdem ist Visual Basic 16 die erste Version von Visual Basic, die auf den .NET Core ausgerichtet ist.
Eigenschaften Windows-Anwendungen Für die Entwicklung von Windows-Anwendungen wird Windows Forms benutzt. Hierbei handelt es sich um ein ereignisorientiertes Programmiermodell, bei dem entsprechende Ereignis-Prozeduren aufgerufen werden, wenn das Betriebssystem eine bestimmte Benutzeraktion, wie z. B. das Betätigen einer Schaltfläche, meldet.
Im Gegensatz zu Visual Basic 6 werden Windows Forms nicht in einem speziellen Format gespeichert, sondern wie normale Klassen erstellt und benutzt, die von einer entsprechenden Basisklasse (meist System.Windows.Forms.Form) abgeleitet werden.
Bei der Instanziierung einer solchen Klasse werden im Konstruktor die Objekte erzeugt, die innerhalb des Fensters dargestellt werden sollen. Dieses Modell wird auch in der Programmiersprache Java benutzt.
Moderne Entwicklungsumgebungen ermöglichen die visuelle Erstellung von Formularen, wobei der für den Konstruktor notwendige Code von der Entwicklungsumgebung erzeugt wird.
Web-Anwendungen Für die Entwicklung von Web-Anwendungen wird ASP.NET benutzt. Hierbei erfolgt eine Trennung zwischen der Darstellung der Webseite und dem auszuführenden Code, der sich in einer VB.NET-Klasse befindet. Dies hat den Vorteil, dass der von ASP bekannte Spaghetticode, der gerade die Wartung größerer Projekte erschwert, vermieden wird.
Für die Ausführung von ASP.NET-Anwendungen wird der IIS von Microsoft oder der Apache HTTP Server mit dem mod_mono-Modul benötigt.
ASP.NET ermöglicht auch die Entwicklung von Webservices. Die für die Publizierung von Webservices benötigten Informationen werden von der Entwicklungsumgebung auf Basis von Attributen, die der Programmierer in das Programm einfügt, generiert.
Für den Zugriff auf einen Webservice kann von der Entwicklungsumgebung auf Anforderung eine Klasse generiert werden, die den Zugriff auf die Methoden des Webservices kapseln.
Besonderheiten gegenüber anderen .NET-Sprachen
Als .NET-Sprache unterliegt Visual Basic .NET den Vor- und Nachteilen dieser Plattform. Visual Basic Classic machte viele kleinere Dinge anders als andere Sprachen. Aus Gründen der Abwärtskompatibilität sind viele dieser Punkte als „Altlasten“ in Visual Basic .NET enthalten. Einige Beispiele: Üblicherweise entspricht der in eine Zahl konvertierte logische Wert Falsch bzw. False dem Wert 0, Wahr oder True wird als 1 interpretiert. Visual Basic Classic verwendet für True jedoch den Wert −1 (alle Bits auf 1). Diese Konvention erlaubte es, nicht zwischen einem logischen und einem binären Not-Operator unterscheiden zu müssen. Daher ergibt auch in Visual Basic .NET die Konvertierungen CInt(True) oder CType(True, Int32) noch immer den Wert −1, auch wenn VB.NET inzwischen intern auch mit 0 und 1 arbeitet. Der Aufruf der .NET Framework-Methode Convert.ToInt32(True) evaluiert hingegen auf 1. Die .NET Runtime schaut übrigens 0 als False an, alles andere als True. In den meisten Programmiersprachen ist die Größe in einer Arraydeklaration die Anzahl Einträge, also z. B. int a; deklariert ein Array mit 5 Elementen (in .NET standardmäßig Index 0 bis 4). In VB.NET deklariert Dim a(5) As Integer ein Array mit höchstem Index 5, somit also ein Array mit 6 Elementen (Index 0 bis 5), um abwärtskompatibel zur VB Classic Syntax Dim a([lowerBound To] upperBound) zu bleiben. Sprachunterstützung für XML, z. B. für Literals oder für das Abfragen und Erstellen von neuen Elementen VB.NET ist tolerant bei der Initialisierung von Feldern, sie dürfen Referenzen auf die eigenen Instanz oder andere Felder benutzen VB.NET unterstützt Inner-Interfaces und Inner-Klassen in Interfaces. Dieses Verfahren erlaubt es, weitere Versionen eines Interfaces zu erstellen. Der Konsument des Interfaces erhält durch IntelliSense beim Implementieren der ursprünglichen Version den visuellen Hinweis, dass hier noch weitere Versionen vorhanden sind und kann die entsprechende auswählen. VB.NET braucht keine Unterscheidung zwischen out- und byRef-Parametern VB.NET erlaubt das Überschreiben der Iterationsvariable VB.NET erlaubt das Verwenden von byRef in ExtensionMethods, was es erlaubt, die Originalinstanz zu initialisieren oder zu ersetzen. VB.NET hat mehr Linq-Schlüsselwörter als andere Sprachen, so kann z. B. das Schlüsselwort Distinct verwendet werden anstelle des Aufrufs der gleichnamigen Extensionmethod, und falls der Output vom gleichen Typ ist wie der Input, so kann das Select weggelassen werden. Dies macht Linq-Ausdrücke in der Regel kürzer und somit besser lesbar.
Unterschiede zu Visual Basic Classic
Bis auf die Sprachsyntax ist Visual Basic .NET nicht mit den vorherigen Visual-Basic-Versionen vergleichbar. Als vollwertige .NET-Sprache ist VB.NET vollständig objektorientiert und der Quellcode wird in die Common Intermediate Language übersetzt, nicht in nativen Win32-Code. Dieser Code wird zur Laufzeit in Maschinencode umgesetzt und kann hierdurch an die aktuelle Plattform angepasst werden.